From 08be37764b60917a67d65ce2ac8355e0e29d47f5 Mon Sep 17 00:00:00 2001 From: DonBatman Date: Sat, 14 Mar 2015 21:39:43 -0700 Subject: [PATCH] First Upload --- README.md | 34 ++ depends.txt | 1 + init.lua | 12 + machines.lua | 451 +++++++++++++++ millwork.lua | 776 ++++++++++++++++++++++++++ register.lua | 88 +++ textures/millwork_white.png | Bin 0 -> 575 bytes textures/mymillwork_background.png | Bin 0 -> 2038 bytes textures/mymillwork_mach1.png | Bin 0 -> 1691 bytes textures/mymillwork_mach10.png | Bin 0 -> 1027 bytes textures/mymillwork_mach11.png | Bin 0 -> 1169 bytes textures/mymillwork_mach12.png | Bin 0 -> 1437 bytes textures/mymillwork_mach13.png | Bin 0 -> 1754 bytes textures/mymillwork_mach14.png | Bin 0 -> 1023 bytes textures/mymillwork_mach15.png | Bin 0 -> 1175 bytes textures/mymillwork_mach16.png | Bin 0 -> 996 bytes textures/mymillwork_mach17.png | Bin 0 -> 1178 bytes textures/mymillwork_mach18.png | Bin 0 -> 1313 bytes textures/mymillwork_mach19.png | Bin 0 -> 582 bytes textures/mymillwork_mach2.png | Bin 0 -> 1614 bytes textures/mymillwork_mach20.png | Bin 0 -> 876 bytes textures/mymillwork_mach21.png | Bin 0 -> 195 bytes textures/mymillwork_mach22.png | Bin 0 -> 994 bytes textures/mymillwork_mach23.png | Bin 0 -> 1563 bytes textures/mymillwork_mach24.png | Bin 0 -> 405 bytes textures/mymillwork_mach3.png | Bin 0 -> 1429 bytes textures/mymillwork_mach4.png | Bin 0 -> 1795 bytes textures/mymillwork_mach5.png | Bin 0 -> 1643 bytes textures/mymillwork_mach6.png | Bin 0 -> 1833 bytes textures/mymillwork_mach7.png | Bin 0 -> 1303 bytes textures/mymillwork_mach8.png | Bin 0 -> 1458 bytes textures/mymillwork_mach9.png | Bin 0 -> 1815 bytes textures/mymillwork_machine.png | Bin 0 -> 178 bytes textures/mymillwork_machine_back.png | Bin 0 -> 138 bytes textures/mymillwork_machine_front.png | Bin 0 -> 173 bytes textures/mymillwork_machine_side.png | Bin 0 -> 138 bytes textures/mymillwork_machine_top.png | Bin 0 -> 124 bytes 37 files changed, 1362 insertions(+) create mode 100644 README.md create mode 100644 depends.txt create mode 100644 init.lua create mode 100644 machines.lua create mode 100644 millwork.lua create mode 100644 register.lua create mode 100644 textures/millwork_white.png create mode 100644 textures/mymillwork_background.png create mode 100644 textures/mymillwork_mach1.png create mode 100644 textures/mymillwork_mach10.png create mode 100644 textures/mymillwork_mach11.png create mode 100644 textures/mymillwork_mach12.png create mode 100644 textures/mymillwork_mach13.png create mode 100644 textures/mymillwork_mach14.png create mode 100644 textures/mymillwork_mach15.png create mode 100644 textures/mymillwork_mach16.png create mode 100644 textures/mymillwork_mach17.png create mode 100644 textures/mymillwork_mach18.png create mode 100644 textures/mymillwork_mach19.png create mode 100644 textures/mymillwork_mach2.png create mode 100644 textures/mymillwork_mach20.png create mode 100644 textures/mymillwork_mach21.png create mode 100644 textures/mymillwork_mach22.png create mode 100644 textures/mymillwork_mach23.png create mode 100644 textures/mymillwork_mach24.png create mode 100644 textures/mymillwork_mach3.png create mode 100644 textures/mymillwork_mach4.png create mode 100644 textures/mymillwork_mach5.png create mode 100644 textures/mymillwork_mach6.png create mode 100644 textures/mymillwork_mach7.png create mode 100644 textures/mymillwork_mach8.png create mode 100644 textures/mymillwork_mach9.png create mode 100644 textures/mymillwork_machine.png create mode 100644 textures/mymillwork_machine_back.png create mode 100644 textures/mymillwork_machine_front.png create mode 100644 textures/mymillwork_machine_side.png create mode 100644 textures/mymillwork_machine_top.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..706816c --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ +millwork +======== + +Crown Mold, Baseboards, Columns and more + +Latest update adds different textures to the millwork. + +If you want to add or remove a texture simply edit the table at the top of millwork.lua file. + +Right now I have these textures: White, Sandstone, Desert Sand and Clay. The others are commented out. + +Each texture has 28 nodes so careful that you don't add too many textures. + + +local material = {--{Name for description}, {image without .png}, {item name}, {mod name} + + { "White", "crownmold_white","white","wool"}, + +-- { "Cobble", "default_cobble","cobble","default"}, + + { "Sandstone", "default_sandstone","sandstone","default"}, + +-- { "Desert Stone", "default_desert_stone","desert_stone","default"}, + +-- { "Stone", "default_stone","stone","default"}, + +-- { "Tree", "default_tree","tree","default"}, + + { "Desert Sand", "default_desert_sand","desert_sand","default"}, + + { "Clay", "default_clay","clay","default"}, + +-- { "Dirt", "default_dirt","dirt","default"}, +} diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/depends.txt @@ -0,0 +1 @@ +default diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..8f68206 --- /dev/null +++ b/init.lua @@ -0,0 +1,12 @@ +mymillwork = {} +dofile(minetest.get_modpath("mymillwork").."/millwork.lua") +dofile(minetest.get_modpath("mymillwork").."/machines.lua") +dofile(minetest.get_modpath("mymillwork").."/register.lua") + + + + + + + + diff --git a/machines.lua b/machines.lua new file mode 100644 index 0000000..ee4b2bc --- /dev/null +++ b/machines.lua @@ -0,0 +1,451 @@ +local material = {} +local shape = {} +local make_ok = {} +local anzahl = {} + +--function mymillwork.register_all(mat, desc, image, groups, craft) + +minetest.register_node("mymillwork:machine", { + description = "Millwork Machine", + tiles = {"mymillwork_machine_top.png", + "mymillwork_machine_top.png", + "mymillwork_machine_side.png", + "mymillwork_machine_side.png", + "mymillwork_machine_back.png", + "mymillwork_machine_front.png", + }, + drawtype = "normal", + paramtype = "light", + paramtype2 = "facedir", + groups = {oddly_breakable_by_hand=2, cracky=3, dig_immediate=1}, + +-- Set owner of Millwork Machine + 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", "Millwork Machine is empty (owned by " .. (placer:get_player_name() or "") .. ")"); + end, + +can_dig = function(pos,player) + local meta = minetest.env:get_meta(pos); + local inv = meta:get_inventory() + if not inv:is_empty("ingot") then + return false + elseif not inv:is_empty("res") then + return false + end + return true +end, + +on_construct = function(pos) + local meta = minetest.env:get_meta(pos) + meta:set_string("formspec", "invsize[10,11;]".. + "background[-0.15,-0.25;10.40,11.75;mymillwork_background.png]".. + "list[current_name;ingot;8.5,7.5;1,1;]".. + "list[current_name;res;8.5,10;1,1;]".. + "label[8.5,7;Input:]".. + "label[8.5,9.5;Output:]".. + "label[0,0;Choose Millwork:]".. + + "label[0.5,0.5;Crown Mould]".. + "image_button[1,1;1,1;mymillwork_mach1.png;crownmould; ]".. + "image_button[2,1;1,1;mymillwork_mach2.png;crownmould_ic; ]".. + "image_button[3,1;1,1;mymillwork_mach3.png;crownmould_oc; ]".. + "image_button[4,1;1,1;mymillwork_mach4.png;crownmould_beam; ]".. + + "label[0.5,2;Columns]".. + "image_button[1,2.5;1,1;mymillwork_mach5.png;column; ]".. + "image_button[2,2.5;1,1;mymillwork_mach6.png;column_base; ]".. + "image_button[3,2.5;1,1;mymillwork_mach7.png;column_half; ]".. + "image_button[4,2.5;1,1;mymillwork_mach8.png;column_half_base; ]".. + "image_button[5,2.5;1,1;mymillwork_mach9.png;column_half_wbeam; ]".. + "image_button[6,2.5;1,1;mymillwork_mach10.png;column_quarter; ]".. + "image_button[7,2.5;1,1;mymillwork_mach11.png;column_quarter_base; ]".. + "image_button[8,2.5;1,1;mymillwork_mach12.png;column_quarter_wbase; ]".. + "image_button[9,2.5;1,1;mymillwork_mach13.png;column_quarter_fancybase; ]".. + + "label[0.5,3.5;Ceiling and Beams]".. + "image_button[1,4;1,1;mymillwork_mach14.png;ceiling; ]".. + "image_button[2,4;1,1;mymillwork_mach15.png;ceiling_post; ]".. + "image_button[3,4;1,1;mymillwork_mach16.png;beam; ]".. + "image_button[4,4;1,1;mymillwork_mach17.png;beam_t; ]".. + "image_button[5,4;1,1;mymillwork_mach18.png;beam_ceiling_t; ]".. + + "label[0.5,5;Base]".. + "image_button[1,5.5;1,1;mymillwork_mach19.png;base; ]".. + "image_button[2,5.5;1,1;mymillwork_mach20.png;base_ic; ]".. + "image_button[3,5.5;1,1;mymillwork_mach21.png;base_oc; ]".. + "image_button[4,5.5;1,1;mymillwork_mach22.png;base_fancy; ]".. + "image_button[5,5.5;1,1;mymillwork_mach23.png;base_fancy_ic; ]".. + "image_button[6,5.5;1,1;mymillwork_mach24.png;base_fancy_oc; ]".. + "list[current_player;main;0,7;8,4;]") + meta:set_string("infotext", "Millwork Machine") + local inv = meta:get_inventory() + inv:set_size("ingot", 1) + inv:set_size("res", 1) +end, + +on_receive_fields = function(pos, formname, fields, sender) + local meta = minetest.env:get_meta(pos) + local inv = meta:get_inventory() + +-- REGISTER MILLING PROGRAMMS +----------------------------- +if fields["crownmould"] +or fields["crownmould_ic"] +or fields["crownmould_oc"] +or fields["crownmould_beam"] +or fields["column"] +or fields["column_base"] +or fields["column_half"] +or fields["column_half_base"] +or fields["column_half_wbeam"] +or fields["column_quarter"] +or fields["column_quarter_base"] +or fields["column_quarter_wbase"] +or fields["column_quarter_fancybase"] +or fields["ceiling"] +or fields["ceiling_post"] +or fields["beam"] +or fields["beam_t"] +or fields["beam_ceiling_t"] +or fields["base"] +or fields["base_ic"] +or fields["base_oc"] +or fields["base_fancy"] +or fields["base_fancy_ic"] +or fields["base_fancy_oc"] +then + +--Crown Mould----------------------------------------- + if fields["crownmould"] then + make_ok = "0" + anzahl = "1" + shape = "mymillwork:crownmould_" + if inv:is_empty("ingot") then + return + end + end + + if fields["crownmould_ic"] then + make_ok = "0" + anzahl = "1" + shape = "mymillwork:crownmould_ic_" + if inv:is_empty("ingot") then + return + end + end + + if fields["crownmould_oc"] then + make_ok = "0" + anzahl = "1" + shape = "mymillwork:crownmould_oc_" + if inv:is_empty("ingot") then + return + end + end + + if fields["crownmould_beam"] then + make_ok = "0" + anzahl = "1" + shape = "mymillwork:crownmould_beam_" + if inv:is_empty("ingot") then + return + end + end + +--Columns---------------------------------------------- + + if fields["column"] then + make_ok = "0" + anzahl = "1" + shape = "mymillwork:column_" + if inv:is_empty("ingot") then + return + end + end + + if fields["column_base"] then + make_ok = "0" + anzahl = "1" + shape = "mymillwork:column_base_" + if inv:is_empty("ingot") then + return + end + end + + if fields["column_half"] then + make_ok = "0" + anzahl = "2" + shape = "mymillwork:column_half_" + if inv:is_empty("ingot") then + return + end + end + + if fields["column_half_base"] then + make_ok = "0" + anzahl = "2" + shape = "mymillwork:column_half_base_" + if inv:is_empty("ingot") then + return + end + end + + if fields["column_half_wbeam"] then + make_ok = "0" + anzahl = "1" + shape = "mymillwork:column_half_wbeam_" + if inv:is_empty("ingot") then + return + end + end + + if fields["column_quarter"] then + make_ok = "0" + anzahl = "4" + shape = "mymillwork:column_quarter_" + if inv:is_empty("ingot") then + return + end + end + + if fields["column_quarter_base"] then + make_ok = "0" + anzahl = "4" + shape = "mymillwork:column_quarter_base_" + if inv:is_empty("ingot") then + return + end + end + + if fields["column_quarter_wbase"] then + make_ok = "0" + anzahl = "2" + shape = "mymillwork:column_quarter_wbase_" + if inv:is_empty("ingot") then + return + end + end + + if fields["column_quarter_fancybase"] then + make_ok = "0" + anzahl = "2" + shape = "mymillwork:column_quarter_fancybase_" + if inv:is_empty("ingot") then + return + end + end + +--Ceiling-------------------------------------------------- + + if fields["ceiling"] then + make_ok = "0" + anzahl = "6" + shape = "mymillwork:ceiling_" + if inv:is_empty("ingot") then + return + end + end + + if fields["ceiling_post"] then + make_ok = "0" + anzahl = "4" + shape = "mymillwork:ceiling_post_" + if inv:is_empty("ingot") then + return + end + end + +--Beam---------------------------------------------- + + if fields["beam"] then + make_ok = "0" + anzahl = "2" + shape = "mymillwork:beam_" + if inv:is_empty("ingot") then + return + end + end + + if fields["beam_t"] then + make_ok = "0" + anzahl = "2" + shape = "mymillwork:beam_t_" + if inv:is_empty("ingot") then + return + end + end + + if fields["beam_ceiling_t"] then + make_ok = "0" + anzahl = "2" + shape = "mymillwork:beam_ceiling_t_" + if inv:is_empty("ingot") then + return + end + end + +--Base---------------------------------------------- + + if fields["base"] then + make_ok = "0" + anzahl = "8" + shape = "mymillwork:base_" + if inv:is_empty("ingot") then + return + end + end + + if fields["base_ic"] then + make_ok = "0" + anzahl = "4" + shape = "mymillwork:base_ic_" + if inv:is_empty("ingot") then + return + end + end + + if fields["base_oc"] then + make_ok = "0" + anzahl = "10" + shape = "mymillwork:base_oc_" + if inv:is_empty("ingot") then + return + end + end + + if fields["base_fancy"] then + make_ok = "0" + anzahl = "6" + shape = "mymillwork:base_fancy_" + if inv:is_empty("ingot") then + return + end + end + + if fields["base_fancy_ic"] then + make_ok = "0" + anzahl = "3" + shape = "mymillwork:base_fancy_ic_" + if inv:is_empty("ingot") then + return + end + end + + if fields["base_fancy_oc"] then + make_ok = "0" + anzahl = "8" + shape = "mymillwork:base_fancy_oc_" + if inv:is_empty("ingot") then + return + end + end + + local ingotstack = inv:get_stack("ingot", 1) + local resstack = inv:get_stack("res", 1) +---------------------------------------------------------------------- + if ingotstack:get_name()=="default:sandstone" then + material = "default_sandstone" + make_ok = "1" + end + + if ingotstack:get_name()=="default:desert_sand" then + material = "default_desert_sand" + make_ok = "1" + end + + if ingotstack:get_name()=="default:clay" then + material = "default_clay" + make_ok = "1" + end + + if ingotstack:get_name()=="wool:white" then + material = "millwork_white" + make_ok = "1" + end + + if ingotstack:get_name()=="default:desert_stone" then + material = "default_desert_stone" + make_ok = "1" + end + + if ingotstack:get_name()=="default:cobble" then + material = "default_cobble" + make_ok = "1" + end + + if ingotstack:get_name()=="default:stone" then + material = "default_stone" + make_ok = "1" + end + + if ingotstack:get_name()=="default:cactus" then + material = "default_cactus" + make_ok = "1" + end + + if ingotstack:get_name()=="wool:white" then + material = "millwork_white" + make_ok = "1" + end + + if ingotstack:get_name()=="default:sand" then + material = "default_sand" + make_ok = "1" + end + + if ingotstack:get_name()=="default:wood" then + material = "default_wood" + make_ok = "1" + end + + if ingotstack:get_name()=="default:pinewood" then + material = "default_pinewood" + make_ok = "1" + end + + if ingotstack:get_name()=="default:dirt" then + material = "default_dirt" + make_ok = "1" + end +---------------------------------------------------------------------- + if make_ok == "1" then + local give = {} + for i = 0, anzahl-1 do + give[i+1]=inv:add_item("res",shape..material) + end + ingotstack:take_item() + inv:set_stack("ingot",1,ingotstack) + end + + +end +end + + +}) + +--Craft + +minetest.register_craft({ + output = 'mymillwork:machine', + recipe = { + {'default:steelblock', 'default:steelblock', 'default:steelblock'}, + {'default:steelblock', 'default:steel_ingot', 'default:steelblock'}, + {'default:steelblock', "default:steelblock", 'default:steelblock'}, + }, +}) + + + + + + + + + + + + + diff --git a/millwork.lua b/millwork.lua new file mode 100644 index 0000000..3f0efa5 --- /dev/null +++ b/millwork.lua @@ -0,0 +1,776 @@ + +function mymillwork.register_all(mat, desc, image, groups, craft) + +minetest.register_node("mymillwork:crownmould_"..mat, { + description = desc.." Crown Mould", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, 0.5, 0.4375, 0.5, -0.5, 0.5}, + {-0.5, 0.4375, 0.375, 0.5, 0.25, 0.5}, + {-0.5, 0.125, 0.375, 0.5, -0.5, 0.5}, + {-0.5, -0.0625, 0.3125, 0.5, -0.5, 0.5}, + {-0.5, -0.1875, 0.25, 0.5, -0.5, 0.5}, + {-0.5, -0.4375, -0.5, 0.5, -0.5, 0.5}, + {-0.5, -0.375, -0.4375, 0.5, -0.5, -0.25}, + {-0.5, -0.375, -0.125, 0.5, -0.5, 0.5}, + {-0.5, -0.3125, 0.0625, 0.5, -0.5, 0.5}, + {-0.5, -0.25, 0.1875, 0.5, -0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,0.5}, + }, + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:crownmould_ic_"..mat, { + description = desc.." Crown Mould IC", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, 0.5, 0.4375, 0.5, -0.5, 0.5}, + {-0.5, 0.4375, 0.375, 0.5, 0.25, 0.5}, + {-0.5, 0.125, 0.375, 0.5, -0.5, 0.5}, + {-0.5, -0.0625, 0.3125, 0.5, -0.5, 0.5}, + {-0.5, -0.1875, 0.25, 0.5, -0.5, 0.5}, + {-0.5, -0.4375, -0.5, 0.5, -0.5, 0.5}, + {-0.5, -0.375, -0.4375, 0.5, -0.5, -0.25}, + {-0.5, -0.375, -0.125, 0.5, -0.5, 0.5}, + {-0.5, -0.3125, 0.0625, 0.5, -0.5, 0.5}, + {-0.5, -0.25, 0.1875, 0.5, -0.5, 0.5}, + {0.4375, 0.5, -0.5, 0.5, -0.5, 0.5}, + {0.375, 0.4375, -0.5, 0.5, 0.25, 0.5}, + {0.375, 0.125, -0.5, 0.5, -0.5, 0.5}, + {0.3125, -0.0625, -0.5, 0.5, -0.5, 0.5}, + {0.25, -0.1875, -0.5, 0.5, -0.5, 0.5}, + {-0.4375, -0.375, -0.5, -0.25, -0.5, 0.5}, + {-0.125, -0.375, -0.5, 0.5, -0.5, 0.5}, + {0.0625, -0.3125, -0.5, 0.5, -0.5, 0.5}, + {0.1875, -0.25, -0.5, 0.5, -0.5, 0.5}, + {-0.25, -0.375, -0.25, 0.5, -0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,0.5}, + }, + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:crownmould_oc_"..mat, { + description = desc.." Crown Mould OC", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.4375, -0.5, 0.5, -0.5, 0.5}, + {-0.5, 0.5, 0.4375, -0.4375, -0.5, 0.5}, + {-0.5, 0.4375, 0.375, -0.375, 0.25, 0.5}, + {-0.5, 0.125, 0.375, -0.375, -0.5, 0.5}, + {-0.5, -0.0625, 0.3125, -0.3125, -0.5, 0.5}, + {-0.5, -0.1875, 0.25, -0.25, -0.5, 0.5}, + {-0.5, -0.25, 0.1875, -0.1875, -0.5, 0.5}, + {-0.5, -0.3125, 0.0625, -0.0625, -0.5, 0.5}, + {-0.5, -0.375, -0.125, 0.125, -0.5, 0.5}, + {-0.5, -0.375, -0.4375, 0.4375, -0.5, -0.25}, + {0.25, -0.375, -0.4375, 0.4375, -0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:crownmould_beam_"..mat, { + description = desc.." Crown Mould with Beam", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, 0.5, 0.4375, 0.5, -0.5, 0.5}, + {-0.5, 0.4375, 0.375, 0.5, 0.25, 0.5}, + {-0.5, 0.125, 0.375, 0.5, -0.5, 0.5}, + {-0.5, -0.0625, 0.3125, 0.5, -0.5, 0.5}, + {-0.5, -0.1875, 0.25, 0.5, -0.5, 0.5}, + {-0.5, -0.4375, -0.5, 0.5, -0.5, 0.5}, + {-0.5, -0.375, -0.4375, 0.5, -0.5, -0.25}, + {-0.5, -0.375, -0.125, 0.5, -0.5, 0.5}, + {-0.5, -0.3125, 0.0625, 0.5, -0.5, 0.5}, + {-0.5, -0.25, 0.1875, 0.5, -0.5, 0.5}, + {-0.25, -0.25, -0.5, 0.25, -0.5, 0.5}, + {-0.25, -0.1875, -0.5, -0.1875, -0.5, 0.5}, + {0.1875, -0.1875, -0.5, 0.25, -0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:column_" ..mat, { + description = desc.." Column", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.1875, 0.5, 0.5, 0.1875}, + {-0.4375, -0.5, -0.3125, 0.4375, 0.5, 0.3125}, + {-0.375, -0.5, -0.375, 0.375, 0.5, 0.375}, + {-0.3125, -0.5, -0.4375, 0.3125, 0.5, 0.4375}, + {-0.1875, -0.5, -0.5, 0.1875, 0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:column_base_"..mat, { + description = desc.." Column Base", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.1875, 0.5, 0.5, 0.1875}, + {-0.4375, -0.5, -0.3125, 0.4375, 0.5, 0.3125}, + {-0.375, -0.5, -0.375, 0.375, 0.5, 0.375}, + {-0.3125, -0.5, -0.4375, 0.3125, 0.5, 0.4375}, + {-0.1875, -0.5, -0.5, 0.1875, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, -0.1875, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:column_half_"..mat, { + description = desc.." Half Column", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.3125, 0.5, 0.5, 0.5}, + {-0.4375, -0.5, 0.1875, 0.4375, 0.5, 0.5}, + {-0.375, -0.5, 0.125, 0.375, 0.5, 0.5}, + {-0.3125, -0.5, 0.0625, 0.3125, 0.5, 0.4375}, + {-0.1875, -0.5, 0, 0.1875, 0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,0,0.5,0.5,0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:column_half_base_"..mat, { + description = desc.." Half Column Base", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.3125, 0.5, 0.5, 0.5}, + {-0.1875, -0.5, 0, 0.1875, 0.5, 0.5}, + {-0.4375, -0.5, 0.1875, 0.4375, 0.5, 0.5}, + {-0.3125, -0.5, 0.0625, 0.3125, 0.5, 0.5}, + {-0.375, -0.5, 0.125, 0.375, 0.5, 0.5}, + {-0.5, -0.5, -0.0625, 0.5, -0.1875, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.0625,0.5,0.5,0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:column_half_wbeam_"..mat, { + description = desc.." Half Column Base With Beam", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, 0.5, 0.3125, 0.5, -0.5, 0.5}, + {-0.4375, 0.5, 0.1875, 0.4375, -0.5, 0.5}, + {-0.375, 0.5, 0.125, 0.375, -0.5, 0.5}, + {-0.3125, 0.5, 0.0625, 0.3125, -0.5, 0.4375}, + {-0.1875, 0.5, 0, 0.1875, -0.5, 0.5}, + {-0.5, -0.4375, -0.5, 0.5, -0.5, 0.5}, + {-0.25, -0.25, -0.5, 0.25, -0.5, 0.5}, + {-0.25, -0.1875, -0.5, -0.1875, -0.5, 0.5}, + {0.1875, -0.1875, -0.5, 0.25, -0.5, 0.5}, + {-0.5, -0.375, -0.4375, 0.5, -0.5, -0.25}, + {-0.5, -0.375, -0.125, 0.5, -0.5, 0.5}, + {-0.5, -0.3125, 0.0625, 0.5, -0.5, 0.5}, + {-0.5, -0.25, 0.1875, 0.5, -0.5, 0.5}, + {-0.5, -0.1875, 0.25, 0.5, -0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:column_quarter_"..mat, { + description = desc.." Quarter Column", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.3125, 0, 0.5, 0.5}, + {-0.5, -0.5, 0, -0.3125, 0.5, 0.5}, + {-0.5, -0.5, 0.1875, -0.0625, 0.5, 0.5}, + {-0.5, -0.5, 0.0625, -0.1875, 0.5, 0.5}, + {-0.5, -0.5, 0.125, -0.125, 0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,0,0,0.5,0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:column_quarter_base_"..mat, { + description = desc.." Quarter Column Base", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.3125, 0, 0.5, 0.5}, + {-0.5, -0.5, 0, -0.3125, 0.5, 0.5}, + {-0.5, -0.5, 0.1875, -0.0625, 0.5, 0.5}, + {-0.5, -0.5, 0.0625, -0.1875, 0.5, 0.5}, + {-0.5, -0.5, 0.125, -0.125, 0.5, 0.5}, + {-0.5, -0.5, -0.0625, 0.0625, -0.1875, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:column_quarter_wbase_"..mat, { + description = desc.." Quarter Column Base Baseboard", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.3125, 0, 0.5, 0.5}, + {-0.5, -0.5, 0, -0.3125, 0.5, 0.5}, + {-0.5, -0.5, 0.1875, -0.0625, 0.5, 0.5}, + {-0.5, -0.5, 0.0625, -0.1875, 0.5, 0.5}, + {-0.5, -0.5, 0.125, -0.125, 0.5, 0.5}, + {-0.5, -0.5, -0.0625, 0.0625, -0.1875, 0.5}, + {-0.5, -0.5, 0.4375, 0.5, -0.1875, 0.5}, + {-0.4375, -0.5, -0.5, -0.5, -0.1875, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:column_quarter_fancybase_"..mat, { + description = desc.." Quarter Column Base Fancy Baseboard", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.3125, 0, 0.5, 0.5}, + {-0.5, -0.5, 0, -0.3125, 0.5, 0.5}, + {-0.5, -0.5, 0.1875, -0.0625, 0.5, 0.5}, + {-0.5, -0.5, 0.0625, -0.1875, 0.5, 0.5}, + {-0.5, -0.5, 0.125, -0.125, 0.5, 0.5}, + {-0.5, -0.5, 0.3125, 0.5, -0.1875, 0.5}, + {-0.5, -0.5, 0.4375, 0.5, 0.1875, 0.5}, + {-0.5, -0.5, 0.375, 0.5, -0.0625, 0.5}, + {-0.5, 0, 0.375, 0.5, 0.125, 0.5}, + {-0.5, -0.5, -0.5, -0.4375, 0.1875, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, -0.1875, 0.5}, + {-0.5, -0.5, -0.5, -0.375, -0.0625, 0.5}, + {-0.5, 0, -0.5, -0.375, 0.125, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:ceiling_" ..mat, { + description = desc.." Ceiling", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.4375, -0.5, 0.5, -0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.4375, -0.5, 0.5, -0.5, 0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:ceiling_post_"..mat, { + description = desc.." Ceiling with Post", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.4375, -0.5, 0.5, -0.5, 0.5}, + {-0.125, 0.5, -0.0625, 0.125, -0.5, 0.0625}, + {-0.0625, 0.5, -0.125, 0.0625, -0.5, 0.125}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.4375, -0.5, 0.5, -0.5, 0.5}, + {-0.125, 0.5, -0.0625, 0.125, -0.5, 0.0625}, + {-0.0625, 0.5, -0.125, 0.0625, -0.5, 0.125}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:beam_ceiling_"..mat, { + description = desc.." Ceiling with Beam", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.25, -0.1875, -0.5, -0.1875, -0.5, 0.5}, + {-0.1875, -0.25, -0.5, 0.25, -0.5, 0.5}, + {0.1875, -0.1875, -0.5, 0.25, -0.5, 0.5}, + {-0.5, -0.4375, -0.5, 0.5, -0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.1875, -0.5, 0.5, -0.5, 0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:beam_ceiling_t_"..mat, { + description = desc.." Ceiling with Beam T", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.25, -0.1875, -0.5, -0.1875, -0.5, 0.5}, + {-0.1875, -0.25, -0.5, 0.25, -0.5, 0.5}, + {0.1875, -0.1875, -0.5, 0.25, -0.5, 0.5}, + {-0.5, -0.25, -0.25, 0.5, -0.5, 0.25}, + {-0.5, -0.1875, -0.25, 0.5, -0.5, -0.1875}, + {-0.5, -0.1875, 0.1875, 0.5, -0.5, 0.25}, + {-0.25, -0.1875, -0.25, 0.25, -0.5, 0.1875}, + {-0.5, -0.4375, -0.5, 0.5, -0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.1875, -0.5, 0.5, -0.5, 0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:beam_" ..mat, { + description = desc.." Beam", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.25, -0.1875, -0.5, -0.1875, -0.5, 0.5}, + {-0.1875, -0.25, -0.5, 0.25, -0.5, 0.5}, + {0.1875, -0.1875, -0.5, 0.25, -0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.25, -0.1875, -0.5, 0.25, -0.5, 0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:beam_t_"..mat, { + description = desc.." Beam T", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.25, -0.1875, -0.5, -0.1875, -0.5, 0.5}, + {-0.1875, -0.25, -0.5, 0.25, -0.5, 0.5}, + {0.1875, -0.1875, -0.5, 0.25, -0.5, 0.5}, + {-0.5, -0.25, -0.25, 0.5, -0.5, 0.25}, + {-0.5, -0.1875, -0.25, 0.5, -0.5, -0.1875}, + {-0.5, -0.1875, 0.1875, 0.5, -0.5, 0.25}, + {-0.25, -0.1875, -0.25, 0.25, -0.5, 0.1875}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.1875, -0.5, 0.5, -0.5, 0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:base_" ..mat, { + description = desc.." Baseboard", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.4375, 0.5, -0.1875, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.3375, 0.5, -0.0875, 0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:base_ic_"..mat, { + description = desc.." Baseboard IC", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.4375, 0.5, -0.1875, 0.5}, + {-0.4375, -0.5, -0.5, -0.5, -0.1875, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.3375, 0.5, -0.0875, 0.5}, + {-0.3375, -0.5, -0.5, -0.5, -0.0875, 0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:base_oc_"..mat, { + description = desc.." Baseboard OC", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.4375, -0.4375, -0.1875, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.3, -0.3, -0.1875, 0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:base_fancy_"..mat, { + description = desc.." Fancy Baseboard", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.3125, 0.5, -0.1875, 0.5}, + {-0.5, -0.5, 0.4375, 0.5, 0.1875, 0.5}, + {-0.5, -0.5, 0.375, 0.5, -0.0625, 0.5}, + {-0.5, 0, 0.375, 0.5, 0.125, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.25, 0.5, 0.25, 0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:base_fancy_ic_"..mat, { + description = desc.." Fancy Baseboard IC", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.3125, 0.5, -0.1875, 0.5}, + {-0.5, -0.5, 0.4375, 0.5, 0.1875, 0.5}, + {-0.5, -0.5, 0.375, 0.5, -0.0625, 0.5}, + {-0.5, 0, 0.375, 0.5, 0.125, 0.5}, + {-0.5, -0.5, -0.5, -0.4375, 0.1875, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, -0.1875, 0.5}, + {-0.5, -0.5, -0.5, -0.375, -0.0625, 0.5}, + {-0.5, 0, -0.5, -0.375, 0.125, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.25, 0.5, 0.25, 0.5}, + {-0.5, -0.5, -0.5, -0.25, 0.25, 0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("mymillwork:base_fancy_oc_"..mat, { + description = desc.." Fancy Baseboard OC", + drawtype = "nodebox", + tiles = {image}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = true, + groups = {cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.3125, -0.3125, -0.1875, 0.5}, + {-0.5, -0.5, 0.4375, -0.4375, 0.1875, 0.5}, + {-0.5, -0.5, 0.375, -0.375, -0.0625, 0.5}, + {-0.5, 0, 0.375, -0.375, 0.125, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.5, -0.25, 0.25, 0.25}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +end diff --git a/register.lua b/register.lua new file mode 100644 index 0000000..68cc57e --- /dev/null +++ b/register.lua @@ -0,0 +1,88 @@ +mymillwork.register_all(--material, description, image, groups, craft item + "millwork_white", + "White", + "millwork_white.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool" + ) + +mymillwork.register_all(--material, description, image, groups, craft item + "default_sandstone", + "Sandstone", + "default_sandstone.png", + "{cracky = 1, oddly_breakable_by_hand = 1, not_in_creative_inventory=1}", + "default:sandstone" + ) + +mymillwork.register_all(--material, description, image, groups, craft item + "default_desert_sand", + "Desert Sand", + "default_desert_sand.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:desert_sand" + ) +mymillwork.register_all(--material, description, image, groups, craft item + "default_clay", + "Clay", + "default_clay.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:clay" + ) +mymillwork.register_all(--material, description, image, groups, craft item + "default_cobble", + "Cobble", + "default_cobble.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:cobble" + ) +mymillwork.register_all(--material, description, image, groups, craft item + "default_stone", + "Stone", + "default_stone.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:stone" + ) +mymillwork.register_all(--material, description, image, groups, craft item + "default_cactus", + "Cactus", + "default_cactus_side.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:cactus" + ) +mymillwork.register_all(--material, description, image, groups, craft item + "default_sand", + "Sand", + "default_sand.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:sand" + ) +mymillwork.register_all(--material, description, image, groups, craft item + "default_desert_stone", + "Desert Stone", + "default_desert_stone.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:desert_stone" + ) +mymillwork.register_all(--material, description, image, groups, craft item + "default_wood", + "Wood", + "default_wood.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:wood" + ) +mymillwork.register_all(--material, description, image, groups, craft item + "default_pinewood", + "Pine Wood", + "default_pinewood.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:pinewood" + ) +mymillwork.register_all(--material, description, image, groups, craft item + "default_dirt", + "Dirt", + "default_dirt.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:dirt" + ) + + diff --git a/textures/millwork_white.png b/textures/millwork_white.png new file mode 100644 index 0000000000000000000000000000000000000000..2443770b74e6d06ceb80b5e0eb695a89e4c68c40 GIT binary patch literal 575 zcmV-F0>J%=P)>v=p!bfM zG3Nvz#)ybuW?a`r&Y7Gus)~2cQA)wgIM0(>E2R`f1Q8*|$nVu!LsfZyf2XyE2RM#{ z<2cAU(^^AB@ZRH`! zMLs@0Z25~Z5<;N&&YTkwq4!P*ft1o#um%H2t<`F+%sF{JpE&0*Gk$)400<#$1?PEU zW&oV$dGiP%AR@HZXsrQk-)2Vd9aZJ=c;K8P#)xx{obwI3lw!43oO1xwS~-q`7$c<= z08&br8D@s}en;$_!bI!XE-UDo@A%t6^_oym4XI`(@1`FW5$1h;lb!{cixjoc-PpuVI=e(=@dcDj!w?D=h@!szt%id~YN{Lbmr4&+1`~%ZAUSRgW2Pgml N002ovPDHLkV1g?){Rsd7 literal 0 HcmV?d00001 diff --git a/textures/mymillwork_background.png b/textures/mymillwork_background.png new file mode 100644 index 0000000000000000000000000000000000000000..f8e8c5083ef63e5b08e98647586d02fc6d080ff6 GIT binary patch literal 2038 zcmeAS@N?(olHy`uVBq!ia0y~yV0_KMz$C-L1{As0(>51KaTa()7Bet#3xhBt!>lj>b!TKKt+ixg5Xfe5Si=ZJ3>(=Pj!1zJP^e-?=G#MON}?DF7Hr+GkhO`e z;SpR8q64HHSqBzFa4LM@r{>OZ{X+HsuTd^C``87tA2fLA-;ZXiNZ}8de)>Vd#en_M z=9_@xK&L(28T|G2uZgw}wfi==O?G;1o#e1a@B~w1NwW9{PQB*hZjb%lPfjd-=-*P6 za#ymZ0O+Vj7J=*?*V@~3UvKx@E0`F>wz2Iu`zOy9*&|XGhAY;;c9D2@{O*GpJpTXU zxB30BudhCR_nmSzP-EG#qLldthi!N8@G&IuGIW@Nkis>Fh6rXLVrc(7r?jx{3KPS| zeF00Rzwb0_hzM3WSN~QphhgI~k0q{>4r??8vK-kQ)^rP|GhF-dLJX=OVg$%YET$q0 z4Qqu!&mqDxiMN1x@Aqrfmu$;UO QtjHNWUHx3vIVCg!0AFP^`2YX_ literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach1.png b/textures/mymillwork_mach1.png new file mode 100644 index 0000000000000000000000000000000000000000..c66edd4bf9d4e34bd7c48f9a03aa54db629cf465 GIT binary patch literal 1691 zcmV;M24wk(P)hF1?_~St@Uv&n`17Yv zpKf$)xl2Zb5D-G(;Nal)GyVMea{z$%9sp1j1r84n0RV5`zP-InYpr37fib3Y{_yY+ zFJHdAotg#!r4#@lgn$qNq?EAM0svmTcmV+T@ZrPlVLHpQ&iAHiP}gGXCm z-L@@+5XkfVl4K}B`~5zjpH8R9^BnKqy}Mq5@5-mA((M-;Yd^gn@6e+_o+D_xAw+ zbzNgNo9&+IEX$y^hWDOXe)#ZVM-BweIoAPP*ELIt5_dA0U^1EPULHx3KqsF90|{Ki{o9j4|-uGgE`X0M=SqYZ+`+RghAmu4_msJ4GmjfGo?9Wf_bysOuU^ zDR!TofYw@HvbCZpuvjekTAHRTALks>G=+1H0aNe*@a@~T-6kUS9U%mkh1MGL`5dFs z2xVEao&liO>!Ge|IOkYCakA1(&{#XuwD+D9i&&( zahDqdO%HO;;r{*modBpU6+(2HCLsixra_ivonXmD$U!!H@*4vkv$$L?JBcHNKnMXs z2zHNNugCWoW6#Xs$h&^AY^}30pku&N{OnfFrUv^K2=rS4Cv)@iLxvqgy51) zAm{Tr_ZxANZF7jtf)XDD{I?U4N;PR$Yu%YblEq@NVDBb|aD05smifz|4-O7Gwngv6+-NjnCdcD3s;WZMG|*ZjNfKCVp_GD@63#hfS%%?o z$g+x$}*n zaJ2bIr=_bRBDu*wR{aiSGCNaL!>q zpX2oOl;zg8Ez&f_VzFSrKizwL{P+<7I=lC=YY>?DT--m?)YFs`!-K&9=jZ28O2K>2 zzu&e}`Q?V`{rmTq{8wq)N{C2wRkzWMi>b8c&!>6~N72qB#d%+6|8lEI>#|Ea?IvHhcyD z0}`N;rjBEK7NdK|X;~E}ossHQlp%|G)ejpeK_F zlu{5vKnQ{Hc>Lqv&_B(vloH;106++THuL1<1ORY$cJ?FR6F(u9>2!*!ssI3k!2ke| zB*~wT2*Ha20BbGI&(F8V`0?>E0HCTWX#M-I>beF1c<I3A5P@T5AX)aDRWlRtvq^Au&nJlYZ~+?f?L@*^GDKt5Fn1zs2dC zgHj4PwHy9OprQ-lyYbKZN@b&a~NnSI*5UKl3}Q%b>mk0eQ0 zy9WmckWwPgb10=yRTYdeoTM?}BuVRX0Atj749Q|$ELI~0EY+6LTE4?LW%x0eF zT&$~JU6$pSK@%r$FO0{);sVR_9L_mdYddn$S~GB3jQ1XCnr^J~jey66CZ&XPZjDir zPAnm7EyureuCt)6HCb`zxO#Mp`=$pktsPI_izxwwF0JOrCqSr;{E--|C_A%7WU@m1^_S~k2@zIvPP{nUS3{sb#?Xc+#POXNc^W` x2Yd&72Yd&72Yd&72Yd(oUmp7T`T4&D{tGw!5jz|QR1E+C002ovPDHLkV1lbd;SB%) literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach11.png b/textures/mymillwork_mach11.png new file mode 100644 index 0000000000000000000000000000000000000000..b2f168aeab9416ebfb62ebeddec7005f0a11d1fa GIT binary patch literal 1169 zcmV;C1aA9@P)T2ch z=U)MOFc?4x0mc{@V>mcC_6jb^YinSe2=X{<3~qFNYfMm z(ChU80G{Xl`3Ph5Qvjfp!o|hK_c4BQasmKI(-czv`>H(80RYArXswZ^DS{wqv&9&W zj*b8TmzS5_X}sU>V=x$CHk%RCYinyT#vn-&0_yISWl4H>>}Od9V+;-t54&YtYfa1w zA@KJ0hB%G^0KV@-2m#OYpp-&YRRDlEj!~8+gb=8z3U_yRB%e+g7eWxQBuVi6{EW@b zO+-;d_v*Ta5CShRFOX8=_4O5_(FjsXFvjro^t4b5owY;9q+{OccQ_mZ07jz`t-xm^ zilT0dQ)>+&1bpA8V$Aa#y6*VcfMa zAq0#u@H~&SyRoqW&N;#`gb)I0nxZUAa?&PX&-1#~xNC#WkGeT2C28C_XH)OZ;Uv|m zR2~#BJg*h1<~JP61g(`F!F|?`$K&zBTyrJncSm2&xC5!RhUa-G zih?!@oO2XKL12_pWHzpNt+fQYuIr_O)>6RT>FfUfKFYF07>1;Em(6><9+XnFsjjLD zj4>EvAf==;m;c&LRw9*~o10d#&UcdL?#HcCvx6)PdL^f|x3{-+eSCZjr4%^lbTH%! zu&!%ptudR;R#Q`}%n$AaR%_jIR+nkq++PR0ssH&DxhketCY8^|_4PHrdT{*E@eBMH j_%HBZ;J?6sHt>G{d5>E@XF+AW00000NkvXXu0mjfPn#lc literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach12.png b/textures/mymillwork_mach12.png new file mode 100644 index 0000000000000000000000000000000000000000..f0f01d2fc6dd139364b83d3d7a0d4f59e166ac11 GIT binary patch literal 1437 zcmV;O1!DS%P)#zS%IQl5(E~yFlscS z83QE7z=9VeF$6L|U#qM7U;Oz#tLXs+Vbp|L%~a1+pE`BUcPX*9w$|Vu8|pR|U07J) z&#zy8V2q7SZz_Vx1{!XTeS2sfU~nR{(Y8Z0D!u#`MD4R zQp#(~r%?r?`~ZlE?ej2Q4~eXqyRV^y2)nj88Jx` zq-hEv1fnS7qc+B%EK6q9T8pM>5QZT<&x7ZA91e-;vDO|G-j0utQP*_`NDu^Qnx-{p ztwo;a$n%_8r&GIirYTHGDPgUJ@B6IPsi`S=o`)!kAf-f_rYOsjGo%aF_x8DSh!dlC9FdehC z7LOi1LY8GXK0fZ0odgU3W@cvCun!+TgfRw#!2m^3Aj>icA-IM6t;TkCb{0VpV0U+y z4L3bK4bStSl;U)rrYWcMe!t&I(ez(8A#HAMA_xM^%*?Q)XtO_Kyd#g5l@$iEx3|Xt z$oZ3#lNb(%sH%$ZH%6so*MuY`Y7n&62!a4Y2&8GsU3^{F$nzZY^Ybjl&!0d4x;#h< z=R0WvP8%bmDWzbog;J^&%7hU3^5qK#g8_ec%hfOp`BW&HAJ4@Xno&@@B6J}G1AQ=;_c4PPG^py$fzQUm?Z)(TDJq*jlHBZcf@hb1wCzw zUQXsLih^0uTB9fmW|JgA|EcR5MN#lGns>`swX{Bob0wkrx!NCFFg3is& zp)5;8QN)E0)z)zwLu<`zRaFHc1Z$q|M25p5K79B90C@cPF`_79KTwes$8o0`?C>9k zA@5vk&5Ily9JGG-?%g~7OvZF0hTFB!$&fbyU^pDM*8BA7698ahV&c*|yu);oB&e#2 zUvhMGbZNYN|NcFHUS3{?)|yYn?YQf@hA{@Gr>B>$_x9~u0Kk(cPgvVYl61nUcac%P zfB$}^dVp?1jWMl^Nj{;uUm0)Syus$?CSy8Z4R+*lczAeaz@u*c-J|^(!xs$#e&hGk re`0v}2ge=gJJ5Ha??B&y{=3J2nKS}%ywegs00000NkvXXu0mjf%8R4J literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach13.png b/textures/mymillwork_mach13.png new file mode 100644 index 0000000000000000000000000000000000000000..7ae3fba60b809ba69439dd9bbaeded64a7afbfa5 GIT binary patch literal 1754 zcmV<01||84P)?}>xZ_`<>hdc7V1AP52gfa5s-{D=^|C;-T^49m;QzmM_7#YF%>uh)Z=e@_)f z5dc6bg`z0X>-FGyUYRW+u&}TI0Jwku{^4nSc6Ju?^Yi%e;|DW6HZ}&O6voHL87RF= zl7#h6?DzY9D5Y@o=FP)pyeJB0*0yaln@xma2mo+h7q)G~aU5h>hBQq90AUy+NfOw$ zjWkX1{P}a1&!I4G+cpCmA0NlY#s*HDIDtx~!te4thi%*V^yw3%l-S9RQ4v9%(p7i_n?OOmqqtW0U*sWD6mBS6rq9|b7HeA=`V2q*&K@cEG5&%HA z+vV^3{XPI7&vSk+gn(_^|5_^lN#jBYc%H{>M^VH;C1C_wiiW#BuSWEr4+Q*@H`KeWx=v6wn}3B(16d) z&9Nl3)@Zd_$n$&%jO)74T9^8iQXCUnYX~7QIXMXc@H`K9@7_Il;5TmE004ac{F$Y4 z_Uu_GrQkRYYqwUb!Lls)z7N~B(d+e)Bnf9yl1q{#a2y9h2t-kYZnul2r6p*s_qBjM zfnT|D1+MF2b90mXE?&HdqA1X4G*GYC*&1Efg_M#tPMOoxyV=g4KVQ;)v)M$gR>R`r z;-27t8l2azT>}7YZ*Ozo#KZ&u;LV#i448nDuWPNj&-8F9CA8MiTEns|-Odl}d$oDvo1LRMd_gJBD_Q(l0-}g}z1+pwF$wf-Zz-ciQ)Onu6ah%eQ z<$2Ekr)kOx*mrPlZEZ2bG|`0%7Z?C(wJ3@qM(KMKP?lvZv!W;v$1$qaDkrlvO(CUZ zdC{)FeED){ez{xWq?8&0JuxxC5?NbYD@kUsavVImnRUxx>vTE{-gR9b8w3HeEaTlA ztRi=1Tq(smo0^(JyWPf@FJD-Tw0Z(&I)~PplMlV8U^6R1tu-o@3M|V)x7%eoP>ygM z2fpu*EPaO}h5`ftYyIojuR{_5fJ>Jy@j;^B@0Z+$7Gu^klx?-vn3|emDQK2ylO znKoOm*GqGcWL!$gS&<5U6ZGZFmjQrJFec-qc@uP+rtmzEfsz!=OiHpL`O%!TQ+oy{ zWj{IuP-S=W=7Z$EzgI8>Bb zyXkxI`Sj`2%-qJtMybB0AoYEpHEG6y>B(7^!F63GfEFvIM3!YxN?~klj9I6}nDdQf zyeJBGmU_JoAq3Xf*ZF2DO;cVy^;wq1ENQLzkW8S>;H2+@AmBbKcatPRtJOlKQsMI} zEq)NVHR_;1#nbxwIu9mSp=*Z0vXypeH%}itM9?^LkwJT<9ewiT$^JB+rs>FJGPr%_ z7!v>h_GVLhlv&NWvMfWp-G*)3@O>X)7;;cQc<_LUGRKWf`Q}}S)|!(6F--3q$AMA` z&1Mr%pFZV-hIs-q1Ab>`2ag^-;`%;K(-NpSj`=i2WwI&1J*85uR(adZI)Sz~2m%B_ zfM&CaX0uru`|#mIwA*bgFE69p?V{W5Vr69o-@kt^eMbv0gLjbCQFZ*TjE7;!HspC8 zPpq}(=bfFM13Bt0=5#l3s? zSXN1rl&-7Ig6pSJq10@G{`T$LF9B^f0>7L4>?xJi)m47Je*OA^$zs3l@#DuFymZ(e ww9Ny%*#8~P!XMg>fFA)r0)7Pi2si-XFS1$Jyd~caEC2ui07*qoM6N<$f}Af>IsgCw literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach14.png b/textures/mymillwork_mach14.png new file mode 100644 index 0000000000000000000000000000000000000000..589ea48b5a5d39b68b75fbcfc802959359c1dd03 GIT binary patch literal 1023 zcmVzYl=c8pm+}I6puC+KgM!09lp+5QZV$Zujc~-`(9s zYfVuU6h(pOc^G4eq6o)vI6gl9u)Un${gQQXZ~(w!v5?sE@-hJP`TUuo#&?cf_gS62 zUhi`l?{>R*o(F(Z3Z)dr7@nS`3XYEIiL63`4>AAyMnLCzP8fzVCrJ{NQUpPOF@~Zj&{_*<$8p}( z!0v03u$E@!;JR+5YZeq1-)aw*H+1K9GO?Hm`%3R=~SB5bzND*CfH~+ zSX)~I;O_43ZBi+U0>^Q1U01*aK|qouBuPRThWNf;Nz_)vN~+OlR1(j!jCQ+?)>_sq zSIGjlJp=Ig_$cvLo6}})wWziJ$-)+kg|KI}T4vDxzigNGneY2Q?e$V}0E5BcZBi*W z!{+9ufV5>DkH^BK1(BvH#u%2CmP8_+=MhDbI8E6uUDw4JBNfW?9IZ8Jn$l{u0Jy!q zCCf5t_Hy!X@^S0kWw}@f$g)iAZ#J6=b2e5Kg~VPqZ21~s*9Ew_xxw?i%5~wFuC?|$ zdU$wPIZU+HbUGbrR;854B@9Dx9ShVxD{FN!nE)^x4n)+NfPorC(mb?K~ literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach15.png b/textures/mymillwork_mach15.png new file mode 100644 index 0000000000000000000000000000000000000000..0977addfa3da2c1e256c2d4cd7b9d078dcb26ff3 GIT binary patch literal 1175 zcmV;I1Zew-P)qd7K%aIddjqM@L5vGq?iG==uTv1N;a05AYx0 zvkg4_>>C~&8~^}}F;GeY02pJqxVV`9j7up|mL>gn&S8Fje!77_K0YGPbILRTq-lzU zg@x&+O1s?#04Sx<>2#3iIc{%nXQwzH9v%PytyXI`RHY~i0D#t-ju~TMt(|V*Q52!7 zDgq1uob%bCN)QAM@KX;wj$<&!5QZV7l#o&)3`5$5sRb^jBz}8})HQu-fjj4rrYVdu zD9aL@b2#T9gqSU_;Nz%yG^et=(tagO8#JN-2!TW8%CI`r9(Ty1EJgcz%9vfCPXn%P8YnmJ#S62q?&+ zC`cZ6c6I;&CnqOg2Yh>b`&FTN_3+1>a|pwbG+YQliW0|h!+7~?;y9*}@A&xmbE&eq zxe046thGc7Aq0{nL6RhJ&NU>@1N54%lmh1*aU8=r2Wu^=sv`AajDa!s?g9?~L<#?3 zPlqrJDWiVnd5)^8z!-zp8f96+T8qhKLg3RhMOl`RQbGtpRPjDtYmFpHAf?3q{yzDh z%gf96XMBHupDylnI`jY!*w2)c$%KB_{rF2QudjMBd+K;o=HCivts$iZ04yyny)WbI z>+217r<9`Yt>2t62F^L18$}U}F%Uu^O;ZFxK!N&VEs6qR7*eo)KCPeUDdqzVf&k0Q z%K(7u>+APX#ac_=+EXTuV-!V!q9~9g38E-^Wn;Y~^k6vWSX^8r+GJUVs;cOo&NbvC2xsx*WUv}%1dTUDZp!@y)oA}uO zeFIusTcb$*14p9~!Y~A5j6iCw!8ym=+#D6L5CT$4FvgIk=_{||oNF|xG)W-eEXyeS)>_J@-=%tY^?}zXq^qkd2qAt8_}vZY z^z;+}8Xm*TS-ah)V&$BZ&L>Gis^fwBVCr0bdU^r?3UO(0J3DI} z8xDsA+!zDK7>c66Xf$eMSt*4)&l~cnltL6m7z_rDdG*Uo)=Til7>vi`M)7jai8`Ef zWLbt*tA(N{V2mLLd3Se5H2VnXzcyLt=jQ-`m6a6$K$0ZH^*ROW9rmS4aL&o3eY>sg z^?JCuxoI5p6c9oX=i@j=nx+kD8xDv6{%vjDPi$;#Kq=MOfnKi%Ywd^W@U1gv{mVnY p-={49N#3SnSgw1D`oQs->lf;Hf`9Nu#yS81002ovPDHLkV1jgmAqoHh literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach16.png b/textures/mymillwork_mach16.png new file mode 100644 index 0000000000000000000000000000000000000000..3f99fdbcb8ec0c16aab100067618f82111614892 GIT binary patch literal 996 zcmVGW zSr8ry8~AC6D1?9=>~i&@r|u-(t$)GG z@x{eO07jz`x3{+hLBPVof~@cC?0g*Ho12?5Z@1eRV@T7K`T2POUS3{geSLi$fZg5Q zf44Z7mzQOJa&m$(->z(CXJ@~$Bj)k^pSL7=~n7hU>aGj)O4<-}i~*7~l8N zTBDSb01giih5hlY6b5`{WrfjbM5ogc_G-17%%`TN0Epvwg1J1;B?C$+j4{G)nx=$d zh%rV2EDU&~(UAGw-5mh+dR-*o`#xEg@%Z>iwOSQfSTJ@}t5vktTwGjCNG8wo;_a~2 zYLO%f*Vosw(ag*Y06`E4c+0T;?0KHZA&MdZ&d$yz-Ql<3#(~@4{4LQ3Xael>^YetKE2Z##pCn1pTH`nlX_}&x65z&|i2{B%@ZoR>z|ztZ z08dX(^70@EgyA$ziJ}OtHCk(Y-)DMyn&EKB&CQLx&pL?bd1$Rg|An8N*4l={A$gut ztyV>|R?Avz;y9+)>j~TKc3YTB(-dP2T5FMv)|x!e$@82jio{6$)hVBq$qDp6BA_gTbI!#%&ty##xq;rYQjZeqYjVGh?;j7p^hdip%q6SkKwFNFTfz`p`Bt=%3{ SU1K)@0000ESoWy2DG(0G~g9 z{xcZ&-s8O|guwRpcI(~t_BPg9UcY|*=P8IcC1MuL%ga2MC zdwY9WYq8c+6b0UUk|e=7M_tzfx~eMr{k}*@YmG4mtu?(~k0ePbiUNR}H*a$1&K&^x zJu%}uJ39g-&-3s4(we%iF~(r66~?Qo0^rPhO&t-4`V@#`U2w~-2oE#wi#>oQ=heMQ7r<0t{xfWAR{e}>z>$)`o zt#wP^O<8#Fsj7-|=gx`lwbnd&@Y5*J^9ZBr?_!xj2H*TD+k7rqiwU+nq-^<_^E?igv6Yb4= z&*tVP^Z8tK9w+_k)hlUt`SNACUn~|a@TZcT03SYl0N~=qi?Wn)u&Sy!d-kk2Nn}4- zA;8n8Pf61hV+_}>U27#}v#oQE;c$3z#^a87_3BjsCX)#v1d=2XS8&cToleEWcsv$wK0G{ZZAfKVVy&g$@1v9w-M)D7LYNI9 zpp?QGLs^!jX)2}hsT5gFX*4^HjHYQyUDx8XqMXt+mHWD`h4~XP z{_x>L0B+yDEwxJYuM%f(;k~UYjam^#+&ucsn_EX{ErEoWtsST2tg*WwY4SjG))O1h}n+a literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach18.png b/textures/mymillwork_mach18.png new file mode 100644 index 0000000000000000000000000000000000000000..04502d7af168cdc64d27e6a9acb5a06dc3a7d21a GIT binary patch literal 1313 zcmV++1>X9JP)jCN)(1ad&YL079@B(1Q)0Xi3+J|KrM$#2ysz~ z^C5!fqU8|54Nt-QAVC`9WIVRV`vT39-IP=5-kYr*-^7{3Gykml*Eee%+`fIg=0A3Q z`0#;{|LC<4z7W0;z7W0;z7W0;z7W0;z7W0;z7YQZ5w3r?gI=$Pb56cLefo6nKbxDI z0K9tj3V@FvKmHjJch2FQqpoY#*4A3Tt*xzLjA3_o_s@y=jT<)rm`o-BD5cO^v$3(k zcsvFm&vV|rdq*6{T)cQup55Nw{w?9bufCqRe*L=K7exU;RaMe<^5jVXX0w^JS!?I| z>2x{(+`W7E?|(h9xw(lk24f6)p5vS&2m-9NR8=LS%d(`?>4=52)KtR6h#C@tStu>DxJ(B1*CwF8VMo~l*ML6fM z)>79sS(fqgGGQ_?ggj$@XVmY7bb3NJ598=fz+{ztE_|npnV9twt|Ni|PEt(rpx7(c~O>;E>_V)Iq?aP-h0IaXCA1}w_ zIK~*mn>TM{@Uv&n&WZ7ObI!56yiAs5;&VUgot+(d?!tu&azC9;TjGC|oZl6`zP>II zef#z;0O!t~lcn^7m1W7PQ>TO^KKdSo08gGgAq+#JC}MSWwUw03XRWmi1_QRXwwTRk z;{BfzzO}UlK$c~)BVM|634s0med@X<2m+ykwU+UCEDZP8^71m1$%Nr>C~aPJlQ^^4 zj5JLp!Gj=>f62?v@6TzS#wCUy9Y{sWgpM*Zc;gFS;6_iq( zIdeuPGM!Fa{P)Z^#?bHgiK0k0FVFqUmoEeG{Q2{rvr04Jn$hu{HkZ4JyWwy+htF=e zi*rr_(d~8_kH>ue{F%MIJsHcRP-`s#+TGnflr)D@#dqL+8it`HVNnzmMZst^!WctY zmLy3+k|ex-{aX4sxFdS3I_EIP5XW(=V)XsjbuFU5Ws|vxH(S|SFvd_61zKyg z)`G~p}&6`rIcqaR;JxGY1%^D z?}|Q_*Aq>IUcGu1V~m`Z`~;nIN3z2|_Co04!-sOev$G>n{t?>#h&NdWYYJa)ANTba XSS7cgrvT=@00000NkvXXu0mjfGPR5K literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach19.png b/textures/mymillwork_mach19.png new file mode 100644 index 0000000000000000000000000000000000000000..32d3c59f6f487418cec5355de0a0658ce09bb347 GIT binary patch literal 582 zcmV-M0=fN(P)$#^`j53uXH656sX04|q{d>%y+MNu#sjq0I9 z6h#OjBX!k@LPP%!ewWY1*CB)mSxN!N+k-7={QT?%jX8;{ecTH12eY zqKL!c@cd8ncDw!1IVw#o%OXjVJB{8$cRHQN7u}y?u~-1$`#x!!lIJ;=WnmZwS(cF` z2}zRRx-Pn|BZQ#YY+{-wp678ooxW%D69fUvpge=po`->t1yD+!oo z*u)_Ze!cF{GIlao*Zuo%Xu>{T=|%^W@n3R#=M+ z|E+)b`+e!M>$=kK+MYPp>ovRGPPVv8liDAVD(KoO@l|1}L#P5)zzSFaE8u^M9~vXh Ub~Q^pC;$Ke07*qoM6N<$f;C15tN;K2 literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach2.png b/textures/mymillwork_mach2.png new file mode 100644 index 0000000000000000000000000000000000000000..3067b740b3e4aadb21feaba94d227b71622710b6 GIT binary patch literal 1614 zcmV-U2C?~xP)v< zzymz-7x^O`V|#9W*$1{tHDhnGBz87yDT=4ZZl6AV>Qq&adi3Z~!2j%Ze0+>(6BFON zcaPt{c=2K*;Ps|hQA$B6h27oVjm*Dx#_!+14*>Aq0|2rt!@1Ci*CG6da@Hb_kB>Ja6|Hqg5)v%E`a5zZ>@b9YU%!4a@Vc&%Wf`LA_snTo50?|1Ns^$dDtPai?d#XCccei8t+gG{Wm&SUD40j15k{lY z<+zG525}to9{_A`Z~tqVkkpEz004aX@@4Z-u3EzvNh^1t$MHEG_)*{bygb?uV-8)WJ zgTa6$wK3pSr-Tq#B2`u4=g*(m+S|5eC@!!_lTmXl%5U~>SU(VDUWS$Z^IaaPoF+<*F&JKwXEwXiqN(#oO8@H#e&uv z&bd>a<=ns@K70rOn9XLK%KKg|?XYdzP6nj+aU6FvPv50op%P+kz^BtGj4@D3@%F}X zj3|n@Y?U5P%oRle=iCyLGE@FjGP@9PO6&9^RaJE~Narci;?ZVG=N#MVg@Etw?sj^|eq!0$+FHrhVzF3CD&Bj(CXaW{EyYED7ycOd{{BAdy5_7X zC!@tskPe5#j-Dy8NYF`=bo^g>zqOV>Z>?PkT%Toi0C4l>O%6PA1UZ>=4s~6#))$Kf zGugMf#bUugW${G!W!=3hW1b28_U+pp@Df;G;}n=ukMeAVfYO3w-$`1Q0W6yf8T_Y8 zWq*I4S5C4xIXU4mauU+8teuOZ=+qo^zaMx+MBBE=vW&;6OQMY0ukBA|T%P$=RfVdm zkR%B+NX-Bx4e7tL*$jD}^O*{zZ}}O?tlSlvi?Zb(+2PL44!rjqB;I?ZY07etiH0Vn zHq00U?>%c+W=Yy5sduVXj4`m*qONPiam;&@>G%f)Wg!zfkE)GR?9K zZQF7@$r|WPsT>|2t~@i5;H@Y^Q50b^nK0;c)hf@QKL-Hp z?d>t6d7gKy@#N%$n_y!M2N}tS^hynIzaeg#hGn?wDaM70tfx<(a&JkjQn3_5U`8pU z$^wd*m(2v#Br-Po2mfn*BC+bxpZsx|;Us7oc>S^2Z1%^X&sEmGeEAXpaO>7BSZg_u zq!UoDDZ6}Q438OO_}Jpop8>sn`<73jhQlF-!{Ji7nx-jRo?P5TL9eA*mKJ*V?p;(> zg`y}p%TgSiM-G?v)a}))SDgcT3evNz?LP+&0Po+w?_AR(m36=V0n+a literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach20.png b/textures/mymillwork_mach20.png new file mode 100644 index 0000000000000000000000000000000000000000..56f910be1f46b34226cfd66ff025b587cedc5004 GIT binary patch literal 876 zcmV-y1C#uTP))#&wl zZz`|m{gbu1xhaXRuC4%x;~3XkOOtw@hwHio zLBQkVBS8>|{h}xmk)kN#M zOdQA5>vde$MJYwCRzqt|qtReE94_|wbhBAij4|Tl=>~ic@XN4+r`2jP9*;$3rIhSE zR;YQaI@c;mlE}67-E>UfyS=^r(A3@E-Dr8wU z(~z#~zUtwR!UHTXFH@~nWk*s<;W!RK5X?;ESDVxKeNiAyQ%UsM&@ZFk?*q_iH0I8Q zg^Jhfb&@0zZ{6SD|J4J+;o%_wYinyVpz8Jd%x*SUaXSqGZfEDuE|**mP_ywyaX@7OYjo>mG}Xv9D=sRB#$uw0000Zk{Gv q!F}G6IUsv$=04{6$GU~i}d_7;lOGRT;Fe)gxMG?e%@$n+j zXu7MHRLzA{O*+aj1NPs@q#%UuqN{#=&UcnBaddQ~`DMf57mkJKh3JLoh3GjGy|c6P zyF~Bp?IDDq)9KLZbiRFk@4FZ5cDrb;sp}d5r4+qh4}jz2-Fpl%pD%C>*D*q{Q+pLsj7;qs@UJ(pD#ShvP3CGp639hX==rWVF*B$W$f}x##Bt2a%Zt7CyboKM|1b5CVY7WWr=JK?s4AlIQ1Vdc7WphlfAMwBtDVzK>GM3N4DFF&~B@TL10j!C(OJ zuY`X)( zw`+sZ@G68L%Q72`LI{fuK%VCaAy`{mBhPa@&m+%sq9|fxV*|(efZ_iBzCApYQg)-+ zG&s#PK$0YOUP{@>=>V&%s{lMcKDKA+x3@PO$HDVFi-|!*Yi%=1Q4~Z`L|xbTzTaTG zu4{W;mZin4)j*sUYc{T`%BDDjjg*ow4DmdVAPDTd$>rvmhlhuDMVsnZmZiNHh9N?T zhBXZqqtVDBV}wr!v6(aLwt`2Rrf98^QZgQo?fvED<;IH$AxM%0$8mUnf43q{TJ(LN zD2l!m+zK9M<0y*k#wN&26Qz{0?$=r~8jTuwm1Svzb$xxEEX&#xZTgMrVHlmx3UM40 z1VICtY2gNyuh#o^(fxiO$8peF+YZm9K+p4#QX-{fG#XLYwaw?oE7Miew6{-BPd4kc zhR5aQrNzXEFen5;V6AAF_dJiPs!&R?w6tVBW3r4X`>mF7fSa3}Mg!$}9^>)Y22~u# z*7c?jDT;#Oa7dCQBuQeeTi5j`(XD@tUtC;#N@>$YW|sYF&)nYL{@fA5+1Xj6C7pKv z>+7q{E@_%ttD27kA%uOVRXqNQb%5>dZOXE22$E9TW~wYp>lqW&KYmzqb#?VA4bEEg ztCrx8TY7ff-Q5AOwY6m{qABZf9NQu!gs|m&ZjQzJ{XVCsr#4uNqQG&S#_@v*%(*+u zGs0(k@VUa{t8smOZ3ESHU0Z;rQ{&u;o(tC8A Qy8r+H07*qoM6N<$f*kVa>Hq)$ literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach23.png b/textures/mymillwork_mach23.png new file mode 100644 index 0000000000000000000000000000000000000000..91796747452af3c9adf7c98cc8873000641a7cf4 GIT binary patch literal 1563 zcmV+$2ITpPP)YGVJkMigWrZk;NRotFttO0HmPMMT z96fpzfJ&u;QVIaqbphyfI%xgF;rH&{`}Zw{PFxf8ducT>@ZjZB6t%F);za%E}71ZU4}oWnozs zK@bqfF|O;9Bngd1gOQODwzszdNRkAAQmI6@+oj!ZGe191mSuZ7z^+m`fBrm<h(HGDbh5>aU9X{)YO#Ro6+m_a2$s?jsdW3TeRQn^<;i@bQEA$@YZfx z2Ke~#qs)zuj|1@L%^R6BpaE*N8cHdamX`2+AK&-!JdcA14~pI^m5OAVFbt_ys~kRj z7=Z2VZQAWNH*VZuc6N5}Qkk8d#rJ&x78e(VrDMmA0r26&2RfaOJfCG5Cr+FYc2`$d ziK3|JR;B24I+9V8QrNaFYr5SoN-0K1N9lIEXszjXyLg_*^z<~A^@HCRFJAl{xa+zs zFE7jHwOWm4v&qKBhA?X~LmbBNG#0xy+HoIH6_DxNu|<2Vvn)6>%=Ny6*buUTGRmY_83&CJY*+w-2uvP=#X z1OcAs5yvs5QmGIRaU9F{ z&H?cJ`ExAG!f_m7(^Nv^Vj~sfMI$5M_eqkZKt!w65;+>pce~xa<#ESx&{|Wk*X0lZ zM~)m3W3OJll9XmH^IROqq-ly$s!$nCD`1$9qDT(ZAF%m#CT{xEt2Id9{r6*IV-mQl ztE+{G@6Re`_`XjN1fp546|j#j$WYN3?E_kAf;CZ>ML_@IQJ zU({$c_Wc9W!omV~?%a_84uU{lxQ$o(d;Eb?u`Ejh(tzID+WIS?^TUAe@8S0(m4$@` zxxaYv;=ajZujA39M-sfYZA+2Lr_JB~t}^`0JOn-jJ_J4lJ_P=!<3EQ?Jkx}9DU1LB N002ovPDHLkV1igh18D#N literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach24.png b/textures/mymillwork_mach24.png new file mode 100644 index 0000000000000000000000000000000000000000..259cfbfdcea9b8c03f507d2f68d03549a2e56434 GIT binary patch literal 405 zcmV;G0c!qpm~#!yirUr6U+p&+wI;1X20K46a|aL zVla$5PhcC!Z)$1y<=uv{*QqKNr?ZdWr>O0L(d{W+tQ`XXj4l}VDsi1-zo%?5xp zO~-GOQVJ<0tJMmCs;Vf8V*JX~bxqfGxUS3Paxp{DN}E2m=M_Q-wAS|A)HDr25SZNa zyzyZ?&m#;&9*>7{m6USO6#lifXR{e~UH@oxE6Y{i_w;@Lt(N}1O;uIlIF4}?K-;#T zR*KPJ&gU}#+wIoe4FUNRH)UBi{SGFW2?pQ^gjsaLZo-|F00000NkvXXu0mjfL<+D* literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach3.png b/textures/mymillwork_mach3.png new file mode 100644 index 0000000000000000000000000000000000000000..0c52ad8ee5565796bfffd670c827b25b5d758fa8 GIT binary patch literal 1429 zcmV;G1#0?O2 zDEIE&<9fYbANc(}6j<8rc47A}1o-{?_W=OcuV3f3moHxqN5q35;QGgpABT%7ySuvp z0HxIM09Q)EbzJ~}wS&)prwGt#nsVJ*3n9dC0I%2U3|0t%uV23o4^&9Cx_Nr zT)ldAxa3eNg>JXY-#>l&G(1#sT^AodeBk;}0FR;w#u(P`p;49Wt_c9WUhniroP3J4 z7GW3y0B+yD4FGud?Aht2iZKQNFg-mD0MJ_F{rmT)JL1L|c%BExaSFA!g#eGD2qPmS zSYKaFH@`t+BDOfph21q0{M{Ebs>p z9&nVYjEsx`04`p<$ZeaOn*hL32Y~0#pP$Um`S|f;NGTD9AxfnZN~ID2!1sMfDKRlI zfr*I;eE$3y0C4HjCHTG%-}hmyF?d8jt57~gf zagBcjoVIo1au5WNQgYka*cbrd%9ShJM*ZvS>zoTWZrlI>EH5t~8-qCRN!HTR62IAG z6OuIh?Afy{i>~YD3|70{=G7rPK=dk=O2_gt$BOu)N00s;sjy8Y5G#O(Ij4{~U+=MX(LI^A@Eac3YQi^j(DTPj_gWcU-eE4-RrGp2jE#-usCVYfnVf7cFE7J&T~w=84#e8p zT7Mij#vF2VaU8S1Cg4euaFmQO7#|-;5Cn*#2+d{_QcBFs%Pf*)des*4E&89;T+IxNT)+1yagi z0`7a~q%*&V4<8=+(m;uuZS#FUw@O)RkS;rp!+;x&29J-TsISA)zPEhx&e>nn_V)IU zJf)>XBQT!lK?spk1xnUdt96L$g}B3dy^gzg?;c9xgU4)1k}xf-wP>|ku-5Y7P&V;s zg$lQ|uU@^%olup_Wll;mT2e|hn@y$&Sy%$=x-NeF_;E6CK&z{(?60$YCy6A`b8~a3 zR4O@XJBnt7`tjeDJ9q9N2!h-SG@DHrV}7d?Cwf}@`t|D^hbhW~1YOuMb5=b7{1umf jNtFv1E)?=7grdtofDqa69dH##00000NkvXXu0mjfMS!NQ literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach4.png b/textures/mymillwork_mach4.png new file mode 100644 index 0000000000000000000000000000000000000000..c85130bf797f3f5d717e2d24e20fbdf781ca8091 GIT binary patch literal 1795 zcmV+e2mJVnP)a``_k9LG z$#z+mSYKZU03=C*Znyhq7!QH~X_~?q!)#x^e7PbG0;sjFfKHNxWkt!{YPHa6wf>A$ zeBXysieCV*u&{7ynYdB|fP;gB`Aa3wa~NZov3k9Zq9{-l1p^+B#}GmwNfHPlDuv2g ziy#OP1Of6qN0KB^O0g@=4S1TSQ?Wtku*)w>-BKq!Uc>*Bi1(n#Bq!yNuaf6DY*$u5uvr_s&QisCmXR%)zj5*7>1Sa zegFQw(pl2RPO?%l571J|sgh4D*6VfD>vaHt)*5-9V_{)|T_?*j42Q!L6Ljvt^E`(T zf?tEd0A*RiS_>&9Z^E^}BuTKixX6(>K0ZcK6c9p8S>a4IP7{wCde_&BqF`NU3{Lu<{wd$-%2()&y_-fFd&L3)4? z0;ACgqtS?yjkHY?pdvGwz$dxMq#d4_ahhZXg8|=LTwDYI9336OT8nGft}!SoN>WOU z$7A@u58wBZWf_by%)AhSZFCa!nHhih@FA2^$g&J!7(xiapm%q7E4m$z$H?=X!H_jl zrF1((Aq2+bF?zioOKChF&yMlIU;y9u;dvf+fxTW2pFVv805qG;DW`FrW76v~tzJ(A1&1RD=E(}9xtvMppy9@>cD5W5T;7BwY4FKRIrfX+s=Z9_XF9F}$+QMiw zLY8GXIyz#u2{3J>(P$t^5}tD0DTqLnWr;U$-oW>LG@DJNX^JaXuJAf;5u#-MrR1b? zySlo{quA%qp8){ZuV2UV^72&XQy)G#lDV!jIT!%ImoHzY?C_-G^Havx*49uI1nt}-1Xdu zow@*#ZBfG9ym^y*W-8zAq*4?G;y7jT);*VfkfyT%wE8sa!cr_*71 z8DmatZ>NB-udg!;WKFaIV+?Aw8ZSzEEz1%~lHl97Z~Tz`{e5PvC<<6>QI;h~h2}^~ zKBW}$JjZZ2gp=A)`+5rlZ^Uwr4%PIB|U9|kwl{Jz`mayR&2 l)^;v{)1d5LZkIT#>mTVvBhg`RZhHU#002ovPDHLkV1iduSm^)& literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach5.png b/textures/mymillwork_mach5.png new file mode 100644 index 0000000000000000000000000000000000000000..93b69e02d8843662c8970ca36e45a0c5c1be9fb8 GIT binary patch literal 1643 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 N002ovPDHLkV1g5`VbK5p literal 0 HcmV?d00001 diff --git a/textures/mymillwork_mach8.png b/textures/mymillwork_mach8.png new file mode 100644 index 0000000000000000000000000000000000000000..0f8ff537114db957b6b5a0cb97c167d30cb68618 GIT binary patch literal 1458 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 FV1gGvVoCr2 literal 0 HcmV?d00001 diff --git a/textures/mymillwork_machine.png b/textures/mymillwork_machine.png new file mode 100644 index 0000000000000000000000000000000000000000..01ec34e96d44c94c534cbcf025d97b3d0051fdfa GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP%y>Q z#WBR%hz{G{`;#0&`y7M~Yte)BAN*Z02o|TuHyQu{ literal 0 HcmV?d00001 diff --git a/textures/mymillwork_machine_back.png b/textures/mymillwork_machine_back.png new file mode 100644 index 0000000000000000000000000000000000000000..38cf29b3cecd93511b0af979e91270726f0e653a GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP|(KH z#WBR%hz{G{`;#Ec1+H!_@xe0W5f0-4=-C1ltPj0_C^ hELSl$44O5UahaQNrMv!*cR+I(JYD@<);T3K0RZLYCgcDB literal 0 HcmV?d00001 diff --git a/textures/mymillwork_machine_front.png b/textures/mymillwork_machine_front.png new file mode 100644 index 0000000000000000000000000000000000000000..8c125f1451d61a66127ce128b0121d310253e397 GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP%z%p z#WBR%hz{G{`;#0&`y7M&AwvahcfTI%T?EPZa-4OZrS z25!Cmflr!%qKjBGtmfM#E?Byfce~{L>k%Ej`M=zh&1M(wY)cY12%0sQQFyVG>cW&Q R9zd%YJYD@<);T3K0RUuhIDr5F literal 0 HcmV?d00001 diff --git a/textures/mymillwork_machine_side.png b/textures/mymillwork_machine_side.png new file mode 100644 index 0000000000000000000000000000000000000000..a4919e6586eee4f48709f2e4a0b623b505ec787a GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP|(KH z#WBR%hz{G{`;#0&`y77^(KP485a7&c9hEb#29N_44A he88Kq#KfAJVZE&2Uu7%hz{G{`;#0&`ymc?v6QU+NJECxZd<}&t#vdRap SyRZtVlfl!~&t;ucLK6VO=pkqT literal 0 HcmV?d00001