From 8c51887c0a53bdaf02c93d287fe2883e85214e91 Mon Sep 17 00:00:00 2001 From: DonBatman Date: Mon, 23 Mar 2015 20:03:44 -0700 Subject: [PATCH] First Upload --- depends.txt | 1 + init.lua | 12 + machine.lua | 436 ++++++++++++++++++++++++ nodes.lua | 231 +++++++++++++ register.lua | 427 +++++++++++++++++++++++ textures/mybricks_mach1.png | Bin 0 -> 2275 bytes textures/mybricks_mach2.png | Bin 0 -> 2256 bytes textures/mybricks_mach3.png | Bin 0 -> 2312 bytes textures/mybricks_mach4.png | Bin 0 -> 1896 bytes textures/mybricks_mach5.png | Bin 0 -> 2342 bytes textures/mybricks_mach6.png | Bin 0 -> 2223 bytes textures/mybricks_machine.png | Bin 0 -> 307 bytes textures/mybricks_machine_side.png | Bin 0 -> 143 bytes textures/mybricks_machine_top.png | Bin 0 -> 160 bytes textures/myholeinthewall_background.png | Bin 0 -> 2038 bytes textures/myholeinthewall_mach1.png | Bin 0 -> 2339 bytes textures/myholeinthewall_mach2.png | Bin 0 -> 2266 bytes textures/myholeinthewall_mach3.png | Bin 0 -> 2344 bytes textures/myholeinthewall_mach4.png | Bin 0 -> 2210 bytes textures/myholeinthewall_mach5.png | Bin 0 -> 2298 bytes textures/myholeinthewall_mach6.png | Bin 0 -> 2076 bytes textures/myholeinthewall_sand.png | Bin 0 -> 385 bytes 22 files changed, 1107 insertions(+) create mode 100644 depends.txt create mode 100644 init.lua create mode 100644 machine.lua create mode 100644 nodes.lua create mode 100644 register.lua create mode 100644 textures/mybricks_mach1.png create mode 100644 textures/mybricks_mach2.png create mode 100644 textures/mybricks_mach3.png create mode 100644 textures/mybricks_mach4.png create mode 100644 textures/mybricks_mach5.png create mode 100644 textures/mybricks_mach6.png create mode 100644 textures/mybricks_machine.png create mode 100644 textures/mybricks_machine_side.png create mode 100644 textures/mybricks_machine_top.png create mode 100644 textures/myholeinthewall_background.png create mode 100644 textures/myholeinthewall_mach1.png create mode 100644 textures/myholeinthewall_mach2.png create mode 100644 textures/myholeinthewall_mach3.png create mode 100644 textures/myholeinthewall_mach4.png create mode 100644 textures/myholeinthewall_mach5.png create mode 100644 textures/myholeinthewall_mach6.png create mode 100644 textures/myholeinthewall_sand.png 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..0b4cdb6 --- /dev/null +++ b/init.lua @@ -0,0 +1,12 @@ +myholeinthewall = {} +dofile(minetest.get_modpath("myholeinthewall").."/nodes.lua") +dofile(minetest.get_modpath("myholeinthewall").."/machine.lua") +dofile(minetest.get_modpath("myholeinthewall").."/register.lua") + + + + + + + + diff --git a/machine.lua b/machine.lua new file mode 100644 index 0000000..c63904f --- /dev/null +++ b/machine.lua @@ -0,0 +1,436 @@ +local material = {} +local shape = {} +local make_ok = {} +local anzahl = {} + +minetest.register_node("myholeinthewall:machine", { + description = "Hole Machine", + tiles = {"myholeinthewall_sand.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky=2}, + node_box = { + type = "fixed", + fixed = { + {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5}, -- NodeBox1 + {0.375, -0.5, -0.5, 0.5, 0.5, -0.375}, -- NodeBox2 + {-0.5, -0.5, -0.5, -0.375, 0.5, -0.375}, -- NodeBox3 + {-0.5, -0.5, -0.5, 0.5, 0.0625, 0.5}, -- NodeBox4 + {-0.5, -0.5, 0.375, -0.375, 0.5, 0.5}, -- NodeBox5 + {0.375, -0.5, 0.375, 0.5, 0.5, 0.5}, -- NodeBox6 + {-0.0625, 0.0625, -0.25, 0, 0.1875, 0.25}, -- NodeBox7 + {-0.0625, 0.0625, -0.125, 0, 0.25, 0.125}, -- NodeBox8 + } + }, + + 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", "Hole 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[8,9;]".. + "background[-0.15,-0.25;8.40,9.75;myholeinthewall_background.png]".. + "list[current_name;ingot;5.5,1;1,1;]".. + "list[current_name;res;5.5,3;1,1;]".. + "label[5.5,0.5;Input:]".. + "label[5.5,2.5;Output:]".. + "label[0,0;Choose Hole:]".. +-- Column 1 + "image_button[1,1;1,1;myholeinthewall_mach1.png;diamond; ]".. + "image_button[1,2;1,1;myholeinthewall_mach2.png;diamondr; ]".. + "image_button[1,3;1,1;myholeinthewall_mach3.png;x; ]".. +-- Column 2 + "image_button[2.5,1;1,1;myholeinthewall_mach4.png;cross; ]".. + "image_button[2.5,2;1,1;myholeinthewall_mach5.png;crossi; ]".. + "image_button[2.5,3;1,1;myholeinthewall_mach6.png;o; ]".. + "list[current_player;main;0,5;8,4;]") + meta:set_string("infotext", "Brick 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() + +if fields["diamond"] +or fields["diamondr"] +or fields["x"] +or fields["cross"] +or fields["crossi"] +or fields["o"] +then + + if fields["diamond"] then + make_ok = "0" + anzahl = "1" + shape = "myholeinthewall:diamond_" + if inv:is_empty("ingot") then + return + end + end + + if fields["diamondr"] then + make_ok = "0" + anzahl = "1" + shape = "myholeinthewall:diamond_rough_" + if inv:is_empty("ingot") then + return + end + end + + if fields["x"] then + make_ok = "0" + anzahl = "1" + shape = "myholeinthewall:x_" + if inv:is_empty("ingot") then + return + end + end + + if fields["cross"] then + make_ok = "0" + anzahl = "1" + shape = "myholeinthewall:cross_" + if inv:is_empty("ingot") then + return + end + end + + if fields["crossi"] then + make_ok = "0" + anzahl = "1" + shape = "myholeinthewall:cross_iron_" + if inv:is_empty("ingot") then + return + end + end + + if fields["o"] then + make_ok = "0" + anzahl = "1" + shape = "myholeinthewall:o_" + if inv:is_empty("ingot") then + return + end + end + + local ingotstack = inv:get_stack("ingot", 1) + local resstack = inv:get_stack("res", 1) +---------------------------------------------------------------------------------- +--register nodes +---------------------------------------------------------------------------------- + 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 ingotstack:get_name()=="default:brick" then + material = "default_brick" + make_ok = "1" + end + + if ingotstack:get_name()=="default:bronzeblock" then + material = "default_bronze_block" + make_ok = "1" + end + + if ingotstack:get_name()=="default:coalblock" then + material = "default_coal_block" + make_ok = "1" + end + + if ingotstack:get_name()=="default:copperblock" then + material = "default_copper_block" + make_ok = "1" + end + + if ingotstack:get_name()=="default:desert_cobble" then + material = "default_desert_cobble" + make_ok = "1" + end + + if ingotstack:get_name()=="default:diamondblock" then + material = "default_diamond_block" + make_ok = "1" + end + + if ingotstack:get_name()=="default:glass" then + material = "default_glass" + make_ok = "1" + end + + if ingotstack:get_name()=="default:goldblock" then + material = "default_gold_block" + make_ok = "1" + end + + if ingotstack:get_name()=="default:gravel" then + material = "default_gravel" + make_ok = "1" + end + + if ingotstack:get_name()=="default:ice" then + material = "default_ice" + make_ok = "1" + end + + if ingotstack:get_name()=="default:jungletree" then + material = "default_jungletree" + make_ok = "1" + end + + if ingotstack:get_name()=="default:junglewood" then + material = "default_junglewood" + make_ok = "1" + end + + if ingotstack:get_name()=="default:lava_source" then + material = "default_lava" + make_ok = "1" + end + + if ingotstack:get_name()=="default:mese" then + material = "default_mese" + make_ok = "1" + end + + if ingotstack:get_name()=="default:mossycobble" then + material = "default_mossycobble" + make_ok = "1" + end + + if ingotstack:get_name()=="default:obsidian" then + material = "default_obsidian" + make_ok = "1" + end + + if ingotstack:get_name()=="default:obsidian_glass" then + material = "default_obsidian_glass" + make_ok = "1" + end + + if ingotstack:get_name()=="default:obsidianbrick" then + material = "default_obsidian_brick" + make_ok = "1" + end + + if ingotstack:get_name()=="default:pinetree" then + material = "default_pinetree" + make_ok = "1" + end + + if ingotstack:get_name()=="default:sanddstonebrick" then + material = "default_sandstone_brick" + make_ok = "1" + end + + if ingotstack:get_name()=="default:snowblock" then + material = "default_snow" + make_ok = "1" + end + + if ingotstack:get_name()=="default:steelblock" then + material = "default_steel_block" + make_ok = "1" + end + + if ingotstack:get_name()=="default:stonebrick" then + material = "default_stone_brick" + make_ok = "1" + end + + if ingotstack:get_name()=="default:tree" then + material = "default_tree" + make_ok = "1" + end + + if ingotstack:get_name()=="default:water_source" then + material = "default_water" + make_ok = "1" + end + + if ingotstack:get_name()=="farming:straw" then + material = "farming_straw" + make_ok = "1" + end + +---------------------------------------------------------------------------- +--wool + + if ingotstack:get_name()=="wool:white" then + material = "wool_white" + make_ok = "1" + end + if ingotstack:get_name()=="wool:black" then + material = "wool_black" + make_ok = "1" + end + if ingotstack:get_name()=="wool:blue" then + material = "wool_blue" + make_ok = "1" + end + if ingotstack:get_name()=="wool:brown" then + material = "wool_brown" + make_ok = "1" + end + if ingotstack:get_name()=="wool:cyan" then + material = "wool_cyan" + make_ok = "1" + end + if ingotstack:get_name()=="wool:dark_green" then + material = "wool_dark_green" + make_ok = "1" + end + if ingotstack:get_name()=="wool:dark_grey" then + material = "wool_dark_grey" + make_ok = "1" + end + if ingotstack:get_name()=="wool:green" then + material = "wool_green" + make_ok = "1" + end + if ingotstack:get_name()=="wool:grey" then + material = "wool_grey" + make_ok = "1" + end + if ingotstack:get_name()=="wool:magenta" then + material = "wool_magenta" + make_ok = "1" + end + if ingotstack:get_name()=="wool:orange" then + material = "wool_orange" + make_ok = "1" + end + if ingotstack:get_name()=="wool:pink" then + material = "wool_pink" + make_ok = "1" + end + if ingotstack:get_name()=="wool:red" then + material = "wool_red" + make_ok = "1" + end + if ingotstack:get_name()=="wool:violet" then + material = "wool_violet" + make_ok = "1" + end + if ingotstack:get_name()=="wool:yellow" then + material = "wool_yellow" + 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 = 'myholeinthewall:machine', + recipe = { + {'default:sand', 'default:brick', 'default:sand'}, + {'default:brick', 'default:steel_ingot', 'default:brick'}, + {'default:sand', "default:brick", 'default:sand'}, + }, +}) + + + + + + + + + + + + + diff --git a/nodes.lua b/nodes.lua new file mode 100644 index 0000000..1801d7a --- /dev/null +++ b/nodes.lua @@ -0,0 +1,231 @@ +function myholeinthewall.register_all(mat, desc, image, mygroups, craft, drawtype) + +minetest.register_node("myholeinthewall:diamond_"..mat,{ +-- description = desc.." Diamond", + tiles = {image}, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {crumbly = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, + {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, + {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5}, + {0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, + {0.125, -0.5, -0.5, 0.5, -0.3125, 0.5}, + {-0.5, -0.5, -0.5, -0.125, -0.3125, 0.5}, + {-0.5, 0.3125, -0.5, -0.125, 0.5, 0.5}, + {0.125, 0.3125, -0.5, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, -0.25, 0.5}, + {0.25, -0.5, -0.5, 0.5, -0.1875, 0.5}, + {0.3125, -0.5, -0.5, 0.5, -0.125, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, -0.25, 0.5}, + {-0.5, -0.5, -0.5, -0.25, -0.1875, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, -0.125, 0.5}, + {-0.5, 0.25, -0.5, -0.1875, 0.5, 0.5}, + {-0.5, 0.1875, -0.5, -0.25, 0.5, 0.5}, + {-0.5, 0.125, -0.5, -0.3125, 0.5, 0.5}, + {0.1875, 0.25, -0.5, 0.5, 0.5, 0.5}, + {0.25, 0.1875, -0.5, 0.5, 0.5, 0.5}, + {0.3125, 0.125, -0.5, 0.5, 0.5, 0.5}, + {0.0625, -0.5, -0.5, 0.5, -0.375, 0.5}, + {-0.5, -0.5, -0.5, -0.0625, -0.375, 0.5}, + {-0.5, 0.0625, -0.5, -0.375, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.375, -0.0625, 0.5}, + {-0.5, 0.375, -0.5, -0.0625, 0.5, 0.5}, + {0.0625, 0.375, -0.5, 0.5, 0.5, 0.5}, + {0.375, -0.5, -0.5, 0.5, -0.0625, 0.5}, + {0.375, 0.0625, -0.5, 0.5, 0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,0.5}, + } + }, + on_place = minetest.rotate_node, +}) +minetest.register_node("myholeinthewall:diamond_rough_"..mat,{ +-- description = desc.." Rough Diamond", + tiles = {image}, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {crumbly = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, + {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, + {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5}, + {0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, + {0.0625, -0.5, -0.5, 0.5, -0.3125, 0.5}, + {-0.5, -0.5, -0.5, -0.0625, -0.3125, 0.5}, + {-0.5, 0.3125, -0.5, -0.0625, 0.5, 0.5}, + {0.0625, 0.3125, -0.5, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, -0.1875, 0.5}, + {0.3125, -0.5, -0.5, 0.5, -0.0625, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, -0.1875, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, -0.0625, 0.5}, + {-0.5, 0.1875, -0.5, -0.1875, 0.5, 0.5}, + {-0.5, 0.0625, -0.5, -0.3125, 0.5, 0.5}, + {0.1875, 0.1875, -0.5, 0.5, 0.5, 0.5}, + {0.3125, 0.0625, -0.5, 0.5, 0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,0.5}, + } + }, + on_place = minetest.rotate_node, +}) +minetest.register_node("myholeinthewall:cross_"..mat,{ +-- description = desc.." Cross", + tiles = {image}, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {crumbly = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, + {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, + {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5}, + {0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, + {0.125, -0.5, -0.5, 0.5, -0.125, 0.5}, + {-0.5, -0.5, -0.5, -0.125, -0.125, 0.5}, + {-0.5, 0.125, -0.5, -0.125, 0.5, 0.5}, + {0.125, 0.125, -0.5, 0.5, 0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,0.5}, + } + }, + on_place = minetest.rotate_node, +}) + +minetest.register_node("myholeinthewall:cross_iron_"..mat,{ +-- description = desc.." Iron Cross", + tiles = {image}, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {crumbly = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, + {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, + {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5}, + {0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, + {0.125, -0.5, -0.5, 0.5, -0.3125, 0.5}, + {-0.5, -0.5, -0.5, -0.125, -0.3125, 0.5}, + {-0.5, 0.3125, -0.5, -0.125, 0.5, 0.5}, + {0.125, 0.3125, -0.5, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, -0.25, 0.5}, + {0.25, -0.5, -0.5, 0.5, -0.1875, 0.5}, + {0.3125, -0.5, -0.5, 0.5, -0.125, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, -0.25, 0.5}, + {-0.5, -0.5, -0.5, -0.25, -0.1875, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, -0.125, 0.5}, + {-0.5, 0.25, -0.5, -0.1875, 0.5, 0.5}, + {-0.5, 0.1875, -0.5, -0.25, 0.5, 0.5}, + {-0.5, 0.125, -0.5, -0.3125, 0.5, 0.5}, + {0.1875, 0.25, -0.5, 0.5, 0.5, 0.5}, + {0.25, 0.1875, -0.5, 0.5, 0.5, 0.5}, + {0.3125, 0.125, -0.5, 0.5, 0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,0.5}, + } + }, + on_place = minetest.rotate_node, +}) +minetest.register_node("myholeinthewall:o_"..mat,{ +-- description = desc.." O", + tiles = {image}, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {crumbly = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.25, 0.3125, -0.5, 0.25, 0.5, 0.5}, + {-0.25, -0.5, -0.5, 0.25, -0.3125, 0.5}, + {-0.5, -0.25, -0.5, -0.3125, 0.25, 0.5}, + {0.3125, -0.25, -0.5, 0.5, 0.25, 0.5}, + {0.125, -0.4375, -0.5, 0.3125, -0.25, 0.5}, + {0.1875, -0.375, -0.5, 0.375, -0.1875, 0.5}, + {0.25, -0.3125, -0.5, 0.4375, -0.125, 0.5}, + {-0.3125, -0.4375, -0.5, -0.125, -0.25, 0.5}, + {-0.375, -0.375, -0.5, -0.1875, -0.1875, 0.5}, + {-0.4375, -0.3125, -0.5, -0.25, -0.125, 0.5}, + {-0.3125, 0.25, -0.5, -0.125, 0.4375, 0.5}, + {-0.375, 0.1875, -0.5, -0.1875, 0.375, 0.5}, + {-0.4375, 0.125, -0.5, -0.25, 0.3125, 0.5}, + {0.125, 0.25, -0.5, 0.3125, 0.4375, 0.5}, + {0.1875, 0.1875, -0.5, 0.375, 0.375, 0.5}, + {0.25, 0.125, -0.5, 0.4375, 0.3125, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,0.5}, + } + }, + on_place = minetest.rotate_node, +})minetest.register_node("myholeinthewall:x_"..mat,{ +-- description = desc.." X", + tiles = {image}, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {crumbly = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, 0.25, -0.5, -0.25, 0.5, 0.5}, + {-0.375, 0.125, -0.5, -0.125, 0.375, 0.5}, + {-0.25, 0.0625, -0.5, -0.0625, 0.25, 0.5}, + {-0.5, -0.5, -0.5, -0.25, -0.25, 0.5}, + {-0.375, -0.375, -0.5, -0.125, -0.125, 0.5}, + {-0.25, -0.25, -0.5, -0.0625, -0.0625, 0.5}, + {0.25, 0.25, -0.5, 0.5, 0.5, 0.5}, + {0.125, 0.125, -0.5, 0.375, 0.375, 0.5}, + {0.0625, 0.0625, -0.5, 0.25, 0.25, 0.5}, + {0.25, -0.5, -0.5, 0.5, -0.25, 0.5}, + {0.125, -0.375, -0.5, 0.375, -0.125, 0.5}, + {0.0625, -0.25, -0.5, 0.25, -0.0625, 0.5}, + {-0.1875, -0.1875, -0.5, 0.1875, 0.1875, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,0.5}, + } + }, + on_place = minetest.rotate_node, +}) + +end + + + + + + diff --git a/register.lua b/register.lua new file mode 100644 index 0000000..82867f8 --- /dev/null +++ b/register.lua @@ -0,0 +1,427 @@ + +myholeinthewall.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", + "normal" + ) + +myholeinthewall.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", + "normal" + ) +myholeinthewall.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", + "normal" + ) +myholeinthewall.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", + "normal" + ) +myholeinthewall.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", + "normal" + ) +myholeinthewall.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", + "normal" + ) +myholeinthewall.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", + "normal" + ) +myholeinthewall.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", + "normal" + ) +myholeinthewall.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", + "normal" + ) +myholeinthewall.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", + "normal" + ) +myholeinthewall.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", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_brick", + "Brick", + "default_brick.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:brick", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_bronze_block", + "Bronze Block", + "default_bronze_block.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:bronzeblock", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_coal_block", + "Coal Block", + "default_coal_block.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:coalblock", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_copper_block", + "Copper Block", + "default_copper_block.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:copperblock", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_desert_cobble", + "Desert Cobble", + "default_desert_cobble.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:desert_cobble", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_diamond_block", + "Diamond Block", + "default_diamond_block.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:diamondblock", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_glass", + "Glass", + "default_glass.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:glass", + "glasslike" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_gold_block", + "Gold Block", + "default_gold_block.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:goldblock", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_gravel", + "Gravel", + "default_gravel.png", + "{cracky = 1, falling_node=1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:gravel", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_ice", + "Ice", + "default_ice.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:ice", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_jungletree", + "Jungle Tree", + "default_jungletree.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:jungletree", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_junglewood", + "Jungle Wood", + "default_junglewood.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:junglewood", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_lava", + "Lava", + "default_lava.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:lava_source", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_mese", + "Mese", + "default_mese_block.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:mese", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_mossycobble", + "Mossy Cobble", + "default_mossycobble.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:mossycobble", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_obsidian", + "Obsidian", + "default_obsidian.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:obsidian", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item, drawtype + "default_obsidian_glass", + "Obsidian Glass", + "default_obsidian_glass.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:obsidian_glass", + "glasslike" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_obsidian_brick", + "Obsidian Brick", + "default_obsidian_brick.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:obsidianbrick", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_pinetree", + "Pine Tree", + "default_pinetree.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:pinetree", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_sandstone_brick", + "Sandstone Brick", + "default_sandstone_brick.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:sandstonebrick", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_snow", + "Snow", + "default_snow.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:snowblock", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_steel_block", + "Steel Block", + "default_steel_block.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:steelblock", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_stone_brick", + "Stone Brick", + "default_stone_brick.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:stonebrick", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_tree", + "Tree", + "default_tree.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:tree", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "default_water", + "Water", + "default_water.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "default:water_source", + "normal" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "farming_straw", + "Straw", + "farming_straw.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "farming:straw", + "normal" + ) + +----------------------------------------------------------------------------------------------------- +--wool + + +myholeinthewall.register_all(--material, description, image, groups, craft item + "wool_white", + "White Wool", + "wool_white.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool_white" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "wool_black", + "Black Wool", + "wool_black.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool_black" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "wool_blue", + "Blue Wool", + "wool_blue.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool_blue" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "wool_brown", + "Brown Wool", + "wool_brown.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool_brown" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "wool_cyan", + "Cyan Wool", + "wool_cyan.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool_cyan" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "wool_dark_green", + "Dark Green Wool", + "wool_dark_green.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool_dark_green" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "wool_dark_grey", + "Dark Grey Wool", + "wool_dark_grey.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool_dark_grey" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "wool_green", + "Green Wool", + "wool_green.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool_green" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "wool_grey", + "Grey Wool", + "wool_grey.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool_grey" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "wool_magenta", + "Magenta Wool", + "wool_magenta.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool_magenta" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "wool_orange", + "Orange Wool", + "wool_orange.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool_orange" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "wool_pink", + "Pink Wool", + "wool_pink.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool_pink" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "wool_red", + "Red Wool", + "wool_red.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool_red" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "wool_violet", + "Violet Wool", + "wool_violet.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool_violet" + ) +myholeinthewall.register_all(--material, description, image, groups, craft item + "wool_yellow", + "Yellow Wool", + "wool_yellow.png", + "{cracky = 1, oddly_breakable_by_hand = 1,not_in_creative_inventory=1}", + "wool_yellow" + ) + + + + + + + + + + + + + + + + + + + diff --git a/textures/mybricks_mach1.png b/textures/mybricks_mach1.png new file mode 100644 index 0000000000000000000000000000000000000000..efe2fb81a77729cf7371e81d99ce1588527e0a2d GIT binary patch literal 2275 zcmV<92pso`P)e22ql&lg3w-h;Sca96dN>5 z(#d?BnRzeXcW=)mu^-w#@a8I=o}5`{?X}n5=bT)nQc3ZD_z_1naivn}`~9#!+EIf( zD&XRW+sk|aoy1W^=WeSMwB9tL=E7=YK;*Ad4t z0Kjn^06@Fl1_0#qd6dg#0Km%13IM<~O`JP-?yn+{`x958mn|(V;n=Zb0DwZF08P{2 z`#z7$=kvc_l*<7CI-L$b`y24$Z?xQKH1PB1PdJW)LZN_myA2@(>$}tGAeYO*vMi)& zicY5k+qPjC27(~K=H?~0D$Yd zux%Tz>!Q_apRoX*q<}5uC`vUBMd_Z=DIFQrBX)A?RFdGav8qw zLkIyWC4>;LEDKUf7>1G2y=7S_7K{9>*=#~ei6lv|wzdWU2*VKP&!7J-`#s6o4Vqp? z3`J3dd_E7uFwkf;elZ{f^7%YEolb^fO3*Y-nO*vLo|lQ1=Xo$qGZT@2{`sdbwjLkf z*x1PY9mg?z--qXU{GudDdJDq;ijAge{C@%z1OdV@1OSedDl-Da``Fsr;<==hOag(vbLS3pUFUiBOisfv;JPk{kC@Koa_qNjYinE$Nfs1l z)kR1u-QT{kw{k5|(8#gOn^`81@tlO5S$6&A`;giWU`yA$;G@ zI1w$J?C%_ogD}vIGM?%)TG|C$x@TB*=+Xwe`I6?nx>&tDlyZVrXdVNgki`{ z7RiH{w=4_3?=$EJ4<4}dP_GlmF-LA+QgK}uj^pqI^y6~5oar;Dic*->0!8er3?Dy! zyvN?|-@lJEO_3xC>si-z#Bt1$r9P~sUMLjM>2xqKFu-FM7Z+h! z7AMv6@-lqi$H|i?VcRxzUB~wJHayScF*7qW$mMb@2Q|XFu4kGvawTfgeha)%C?Jkw zu71Qafwpa%b#E931_uWrrR08_Iz9l{+}z}R0Dvb?o*)PU2qDmFwIGB*p-?~&1k5Ng zt?N2Ur4n4%?a}w18dtSNVW%S0-ERoxAs># z$wSjLMZI3stHISmY0`#)fX;YU>U8hu4bHNYikSTaycUbN?5g* z@qHif-o4}J)xi3tB{TX;Of<@Jq3;=LCqWC z*pqS7G-2CzhA}ES#2i&R-}h0g)gYzJRLS@6-^2I)%yy3KZF+h-vv(yYAz(rXBuSEy zi)yR8O2se??$Xrod7cN`wiyr=3?T&X&PPW_asB#rK06UYpjxf=SQ}MIwRxgFfZEck z`LiopJgURg$`;vTKvoFIm)Q{R$E-4gjX6rh079G)9@c~ zMn*6`KF%+sms0p>hohGLX0w^`Z*}9W>pIdj&GgybhoS2H>bTdhU++&U>Y>Z{_&99a z#)l6d&}=s0I1bwFHZw*I5pB=ZNJuFWh9QC=U~qJhM9Jy8E;mzj3P6M`E-pd{fk%%X z9sFSb@#Dt;fJ>JyWwhSiWU00}G&Iz=VN*}S$dxFPK@jj<3kwUVR;zgW^yzOw@9WU> z?%lhY^A2@)Z&?;R&x7y#IC0_xOQuvR@mU}(tXM1}j$@Wknx-5r!!Ypj<;w#dHSha; zoF=SPDts7OtJN|mVEy_X(=?e`6*!$Ssv17X`S^kFfcj0Y+9vJh2{c(D>0Hw^2EVYd z004OQ?Ad{DCI09Rh_tVsK+*9;sZ?Uwbo;%gX{c7KNYfNMJ3D`MiIqEyo8?NS!adHX zPoG%VwOWlg3rUioTCF0V&m&FKT@&wLyXRDyyLj;;JkP_*$_mS5c6JtqVc^-bXNPt{ xn>&iT{O8Y~XA<-%ZkLbbN}O`ws6Ye2e*pW~5y%D`JZJy_002ovPDHLkV1n4XI)VTI literal 0 HcmV?d00001 diff --git a/textures/mybricks_mach2.png b/textures/mybricks_mach2.png new file mode 100644 index 0000000000000000000000000000000000000000..80d18e397fc18187c3d463d676c443fa7516d632 GIT binary patch literal 2256 zcmV;>2ru`EP)Z%Lu~|0AQLX0HD!m002}~MLwSg04y#p0szwKG=_$T z000jjJUB7%)NxgXEM^!6R#sL30GUh%k|e=#9Nwp@>hG7NQUHLxy*>Wy(xpo$rq8ie zW&cb1`}<+rHnz97(P%WFC<^m?Z*LE&R0_JTquFd?Z*LEVVW79S7wL4m<(bDlfN~VD zg+c)Uu)4Ym(=^d+HgV<36#zgsn?-MLFD%Q#_VzXapkA-TFbve|by$|g)Bu1&p#ax) zvA(_z0FY%FK@i~b<;!gibnM`yz?+$w!OYA|jKA~q^O&EXXWjxpu~?4|)1I}pwU~7Qz_x7wV58W!&7Pz8jf{-&Gem4#TU&9e zkY#9vVF<@@VB0poD2k$1zDWnC1L7~K4$(~nNfdKk7eNpJK+HIY24^;#g=JZ|di5$~ zS&s293`0aw1jljs<+`rp+O=!3gS)Pa_wV1w=tJN)Ha2kP%ozZ{j~_n(0Nvf)$mjDd zfvjm7G);>g^iWl?Z5!Ea7U^^vgM)({ocVm7EipMc+48%$Z{M%m%FtD+)F%${~wmtydym=F^U%x&Wxa+!DSXh8z7yy92zCNajXbI6fVpbFt zgt#ll%kc0pf3`oE#Wg-Y&U8tlW(#o3vY_iaq9}qSN!Z-n1OS{pdzL|3mKEFo`Sa&Q zuG0%W&x7MQa2y9yQ&RwdJ9qBDFbs|xagB|Qq1kM*A?N@{)^YKqU%q^a1u*?>Zf+u% z%Rx~TD2f6}lHhqBJkR4IOHmXKN?q5X>pJG<<`O}VkB@UKk@wmGPvkfiOZ4M>KF@p= zC6CHgF`*De#JZ)kvl9T&)6)~%M|8EvlCriT^#5HTGVn85P4WE&T_e2i+r{XPU4lKD4ZQLnG6?6 z#PyYx6$C+mAP8{%`gP_f0bN^LL$O%o{RDbqVgiMT4Y5LgzLKO74op}`;cWB&!0c%-)Nea2wqA`^+bVUvB+E{&Xb0V z{5K4Pe(Zqk$j@@aom87!FO-FfcFxRaH?gmk-x*THn5XOVn#x zN$%_J?ru>cafu2cQffcw+qZ9HU|`_rwMw;Gjfp+g7B_C(NUX6}S65@ova_>;d_Es* zB0SHFHPLjaa=8rCG+~-1zw_3uTToRsHVsIMr9`UOwhcv5plKQ_L#0yT4u`x_tyVc3 ze*gZRfd@grpiR?cuwfWNmSr{uDGI$~Y;25`M$DW^!G0iBlBhtPdAmi!pZ)2a0#O7_ z%lCcGxI_y{k~rOao)_y;+opWOFxWj5)zxa1Ek`m|sZ=;<&!0cfR$W?Jim8MoNtl|N zg0AbaN!R%JI9|Sd8S7~kML`rrF}j$hnOGsV$f2fb97I${i&`#bPO&OXY7iX9!J9X4 z5^L^uWwb~QF@6qhBRn14{)~rBdO&)Zy5+%?I{851OW7WMqWB6^0>? zxf}-}wP>|kt)<-}9S*~gdE0C@p=lai*F{H12VT5*aqLm^k*-oor4m1M ze|5OulD2L0_oitwJw%xkQ~Gg6%O}1{DV0hscRr$Qc6N61cv++hsf9RqnVp>lfI}&9 zYIi_H9~w=Fi71!Lp{uKlOIUGmFG&*0c=F`Qsoin5%*X$9wY&a4P0*)yLEBFM ePpTG2UH2$h^|HGmDsflN1X87;hw{QRU`K3Pz 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 M07*qoM6N<$f?jz$nE(I) literal 0 HcmV?d00001 diff --git a/textures/mybricks_mach6.png b/textures/mybricks_mach6.png new file mode 100644 index 0000000000000000000000000000000000000000..b8e30c7cf4b19ee6eda0a6fae95cf0fa78d37aca GIT binary patch literal 2223 zcmV;g2vGNlP)LVtii!JkmCX*3$B)oN%qn>csw900&|U1*wyBuV%=(=>m+ zXkr2Y(C_#8-u(PL0N~}zmuJs7F|@Ib8{1Enli934B`8J zMaxkXAqWB_Ndm(#Af<$17;qd1Qc4C!x_2B0larHtuiNcHN{ON z<>{odySs~ey$&G+>h(HwU9adb&vO(-fh0*P`nD_!S(Y)|^o;NO$g+$jLC;>ico6{b z?b|m1z|71Hf*?Sz*Tdt-k9h)?Wg$&dJbLu#*Ih*jfx%z^+qSW|xQMrJ-vR)FAYhr0 z3lv4ctP{IZN@kceZx{xWB*EU^9*-rZWD;)QzRhG%dePVK|GbNDf zRj=2fX&QXrXQnkxLz<>Y)0CSmk_R#GI1Z8|!Gi}6P^;A{pq@T`%DF_58<(gfjE7+e z&-1uhqCW>gfG=OZRCBI`;SX5yx=_w3<_t%tcW^ z*Y!$sMy^Cn+L6Fr*F~P^T>Yp-6KEj>rlzL2ot08TN{PF7?*af@SscgM+1bIu!U6_^ z0Y@T95-cw-qu1-fFbuR>t%`#X)4Hz1_kDz6IHK$#{5y`rgV$;`&Vw)v zdFe)tla#W;EPb-FdK22_zRbtz=ZI+)p zSz?pIG^94il1zcjx3 z+`D)0eoZRsrpx^NJcJPV`0*pU-7Y-OLli~akJDO^mS<`tq?Ab06obKlS)`35auTYF zwr%q+07YSaeI15j;KhpP{H-DrzKYthKc@v|25^ zdiCl^(7&`>OS`7(vWtq3@B3_h=g*&K$@sp{dx12u$;nCNd0uIrXuG*AOT2mW=2RQ~ zzq~(A12!6sku|5<@eQw%Y};mLRp7M8s4mM+vp;_7GoW#UtF}q2`QarS>0Hw^2EVqp z1^`%DSvmEQ%0D^-BJHa?P_#Ya`##HtiU%dDrfF!kS}4mBhlhv1b%-_bCr*|djRrf- zr%#_)*W26MT+WN4K&#b)X__d@^4P@tpPh56%q=V|AdX{fZEdkkn$0FG%fiaa${#zR xoj8lL{MFUfkp%wJ$Kq#lBtCrncNS;)e*<_c9c>cP02lxO002ovPDHLkV1iagA6EbX literal 0 HcmV?d00001 diff --git a/textures/mybricks_machine.png b/textures/mybricks_machine.png new file mode 100644 index 0000000000000000000000000000000000000000..0bee59b462c7ab92378749c1f961143ab900f323 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfeP(_>Q^8LO3nu}EE_u2*hDcmaJ#)~P*-(J>LVoqN*FKM2C%T0=vv%%iT%pgd zvZTOais-?{h?`$;#Q8ApVVWl#e!$evhS}!M*%tG4A3vJT_*GQY$`|(cmWR3H>_vUr zIh(BQm+#cLbmBg%*!FwkDzZ#l?y@(!Gzhvf7;t;s|9R~A`sfeP#hh0lq1FYf6AZdY&$hArhC9by6Kzb#C!|^SIN@`sfeP#hhAx1M3=5(Nty{C&~h{WZ!eFr%i3^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/myholeinthewall_mach1.png b/textures/myholeinthewall_mach1.png new file mode 100644 index 0000000000000000000000000000000000000000..f7dc89dbd387eb23d211f4ce42e006bc51c05ace GIT binary patch literal 2339 zcmV+;3EcLHP)-q<>I~H*ORWCu0Chg+H0@9&ne~6qem(J4?p5hO?>0V4ZdDqUqAKv)jt7xaBvV| z7`A+f|2f95UcCwcSX^A>u{e(TdVGAm>G!|$QBFhS7cXAq>q4Q>^gBI(X`26CR8g?D zw)XEae);m{CU6A2TCD;Aa=9EF#{mF*`}Pe0U>F8&-n6+q_P+o7{I~7L56AD zwo$ECGoS(B@bD0|S`Cilz%UE|K)qf^nx-e#|8E2D@9zfyY;JA>01gfgI1vdj0H~^p zdc6+M^8f&8nxa;#A)n8qqoV_+X+lvHD2jqxw{BrzVBqwn(%ah$Ap`>wLSS@sGy`~d zcNeBgFrfGl7=ZB;s*L5>xnmm^# z2!eoFAz4tEW%nVeG+sB#i{t$%@O!& zwaUNMB=Pa;P|tnW$fqitD;46bd{6{n>FG zE*`dR^Sz`^(zPrLnc-rw*mU3e`Z_a9de$@zaU8Q`$x<7gtR>^J<_-@Jad>zL0L;wH z%nY7Ad&b~{AV9HLWN_pr#bOcN-Q7HA6h%-~6&o8H-0QT8Fg0f~Ns6Kz&3HbaM;ymo z{Rp5C0$~_petsSg9z0;?y1Kd$MG;#bv0W~g;W!S0AYkyz%ggY6A3_LJDisJJkk9Ag z`#ysvrZr82ZQF2Nw@Kf}YMiu1;gokWx~^k>exAqa9?P;A#P04c*M^0K1*B=3sj9@R zyv>sxhonL>I+F1?j-hE9W@l$HJw44OcxY&dJHHn%UH||lCnqynl)>-s??VW|ZXtxg z;o%|j`8-rr<<>z?JbDnBD7x=hsgRa6O~cEVFEKSWg&+v9yu8fGcK7aGw6(QiZf*`q zl3;RjlJkOW)3PkAt*x=_k|aTzrtCVzw5qDmG!402j;pP%>&WNx2*VJ%t|Lv;CTD4q zid-m$hlc?G8yg!fxa(@$sA<{HuZKr99Fbp$u{gm;^$w_vH z*RNkQ%j6FH^NVTe+x#GX4gHU zpq9N#wOYmS@Gv~j!^+AEMn*f?O`gRhshdmo!dt(RCf8qoYXE6pM?C%+~GOw=+9^8Y7_8s5N$h zq-W|=cDk_FyWD-->w;TaVR9cIw^|8R^kjgr}a^(sq%Bxqe005URUE(q7TZ9mt z%)}gl@O__I)ODTP3E4R`P2;_*Wm%d0I1+fJQpxnwa=1Tz`jk1wh@uGF+uM8(X}wi@ zN^Bd3k*T7(uJc365s(wSUavO+Z`mE1rpb%aQHAW!*RNj(0K9wmuBqBKR=ywzplKS? zG|fB+pL0u6p~y7mMym?i#Q6L7?=z>edwYB6?(RmpT*kF)*I-!|N~KbUVYvmZR;#>E z41xf@?=!euF2^|$h9O+nMLwU;Y_7@4R8@uNc{qFa?C+l)Zf$LG8E@PjQS#MlHQqco zR!(`BPN5FNkb4!m^ph;oG=*hZIDh{9PeK3EX)T?a_V)Jj)@*QakR5=SA-gP>%dl-b zquU?|(AL(5IF2*TlVKR#?h@;CP;_eN<6pmi<%Tej< z?EG^F`vm@HJv>FF(LqS(6ean1`OKL!zXkfl?|`f!}BtfxQWS!f#&9b4$&`GVT zs$6ZuFhpl(=Whc(mG_)mTU+?}@nh4`o1!S0%|a_XyKv#czyF?7mQR0wKawPYWmyb1 zm&+lFq7$?GkGxr?I#4c`;rl)(-)VyWW3R+XKJ@A6=s5K?{sWK1IJP;cXP5v0002ov JPDHLkV1jBORbBu9 literal 0 HcmV?d00001 diff --git a/textures/myholeinthewall_mach2.png b/textures/myholeinthewall_mach2.png new file mode 100644 index 0000000000000000000000000000000000000000..0c6207894bf6fdc11841de981eafeb4f74e304c9 GIT binary patch literal 2266 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 literal 0 HcmV?d00001 diff --git a/textures/myholeinthewall_mach3.png b/textures/myholeinthewall_mach3.png new file mode 100644 index 0000000000000000000000000000000000000000..ad687166257c269c388befd6cf8977a7ad99d03d GIT binary patch literal 2344 zcmV+@3D@?CP)4eeL#~ zp7R^rtd(=9!o|S7{yJ$X-FtugTi^cHTKfbZJb2*Z|L~<8)WqH0-Te8@n>YJDzjP3w zW3d=4%lhdi{y4_Fy1D=Wj^prm)oPVL-@0`R05Cp2{^u~>*475oG+~;i?|a8_;5ZH} z%fk2X-|_I_!#{)Zj*gBRcEjN?03e^w0{~vVdIedQ;W!R7P5WT-U|GzyRv& z>j3~?zkUS(OifJz0FE9#dT@uct*!0v9V!ZgCpqNvdH$SErvU)6EVIrB1_l5Cg+c+v zViAU6Fz5r33i)mz5J06;fu?EDbsYd;nkFKV2!s%L|Nec=*#7>0*tX5OCO;n?9fhi@ zto6FOx|*@=?d>eVN~MBuI1I;eu(-ImJ8;r44F-Vv`uds$XJ==B>E()|z%)&SLLtn| z%s>bM0LbNXP*oKJ0|PuyDwRSk76Skji$w$i0iHt$0Zr3z>eML!!0PJiucgw^&;VJM zAx-~gqM^_1jLiq9H2g`z_qiGs?dwa35 zvEfTPOG`^o6a}_zbHvV`Jqz2mk(_oq=Gd(*y%ZIGLzn@b%={B8C^M>dh0D5|QAcVl;;vzInLp&ZwUtgc!(j>_z z2LO2b^eI$TMKBmdxm^C|u43CZbX|wzI6kS|y?eJN1Ex|bG&D5$KzDX_vXnl2_`q(F z&1QMC#594IB*|BNQJ$dBwr%fCDpcuFO_IrEc+q4sS;KN~Z!b!v5@u&-;W&=3oFyrc zt&(Fnj)S?mIRJp`x(J8Es8*|}R;x_F&wvMh)&a$0G1e^&E*6Uz8yjQRDU=s3T;TIC zH8q8c7cct2dC$xCjlO;RmYJnU%CZb01XNXJmuYEf`DdBaYxspi0fj=r_y1rp$PyrM zUb_-PAQFin8jW&VFBXfiZ5xs#VQy~D2YP#iRaNEheg=9+so1s+MNv>Hl{oRx#GRd; zyuot0jPCAk^!E1p>@=Ir!Y~X}DisEwOeRq-m!T*Ma=9E7ML}I%9m?f0&#h@1zJ2?K zmX;PYHa7lVk>#}^Ap~yTyvgiMOiZAmp@DVmx-J5N079V<>v?^B9fo1RvMfwaPI7@p zFJjiREVjOL=gwheW##vateKe^W`GXH=H{j^Blh(4z%UH9H41$w6k>}TA0KDOAjwIR z#3|oP4vjy3`t+{A1G`;M#N%;Zz%)(YLeXdxkw^sDY}V(+WMQdP3e{>AwrxXIRoJ$T za5&5d)UqrDgF#;7#fukERTYY&psA^8e;Nq_rYH(WfWo`|;F3dlJ)hY0y2_0kH`pQ{ zKYq;lf(k8FRWUz5|9ka#DwX1Hh1mAWhx8u`h1l}EQSsLCw9!(j#4JGI`G8yQ)4#O~@C<=cc3C5CTO$>!xu>V6nbpC;!J0LnKYtF(vLH#)FG26v0Tl`b2qD->ynx9O$bU&9RP`+^ zEI^iJ_I658WP7A-N?wUX0>NMquIoaQBt#++*tU(nzCLK0hK-F4UlZ}m4oH?|X49Mc zRaHf)RPr54(=@TTxXA3BKY!kr2_;EFGMVHtgM)+I9eJI|bzNU3rAm^1bL!M7A9!V_ zq~mpf?QB!AMH7>kr_*V!xf6*5`}&!K9k8LXJ`U__3G6c9Is!$1^}EmapKp& zqtPfg#NL)`V`GECQCb&5ARG=uQ54oN0K9wm4#i@T>vwPCKn*r!TE}ttUXh{-054y@ z5?cKM1rCy zc=F^4R8?i0^pdpw3aGw)7}!ZzP=tyOG~^FuMSC@UeM2;J!5d;a2WY~9@np5 zuW2O4#>RLqiUdV~64tK3$@(gl3M|Xwf{MEI?V6*>X<=R0VVWjKz?(7S@i-qw8t45T z$;e9^1>0Lp4S=o8=n;?{lE}`FY+D0SpF%a2yA&>oV};$B+Lz&w!Sfm(kkV z>I3O@km>1Z$g<2Ao&>y9DnU^cl*?t7&~7B{`!k>~U%u2h3KdjzsK_n6+9$wGO-*|O zy{}K*=nzLD5tfa&KBo?!`cccW(Ae0xXTbXo+}i}xy}H-Nw%ggslPCX-=bWEEf9C3v zN?ig={pRno`>#A%raX|%W>GGexlr0q&<6q>06u;C000O|?7C@DX3N{E>v0%Xt2~|zi8Ygx9bNm*c z?$tOBE%cS|z2{9`$M&2#_uO;ujE$#HpO*L!9`aAU`1bAFe7?QCedg~Me**ON>(`NG z+0;q=>lnXz^Cke``Sa&|ttbjUzkmOJ?f1WP7-ymJD_5@YdAr@N{Z12b9Or+78V36P z{y)d~wQJXE;0X9=Gy(uL8V&fq4*>Z7{W}1_wr#Agt^&ZRCm>EMi(apX!^6W0)1K#H zG#XVv1HjSI5uzx9@B6TA8vrmKk5QK8srCQcz*kmQ003{^ya50l9v*Tc5?}xjLSQ@| zBaUMLKv|ZEq6p1q6SK3ka2yAQVZbm9+_`fHyN7lNl!s13;Rl z08kmE*=*LX(O@$(Gc|^r%_dCKM4so!^PJfZ!w|c>yV%{`ty!gE7?4sjIm^q-SYBQ} z9{9}63{2C6X_`Dp9LI>F2vHOP0F+X7287_h^gDq`l7vYhFnS`BY)E2BlJF#H%$F}; z9xoM2INP=%gy5GFn?+GTDTO$WEBdx93t5&i+jNiTdHl{G2>9L$7cKw*zI^!t09agH zgzx*D$OL+8YYSyrR^)b~tGKRX)9P)MF_p!gf4*-~-pJ$-NI5eBVc&=S;%P%nXX6z{bV~N1fO|7Pw_u2*a>arpa^Z1!w`qY(omF#4p@G({Z86(^!+ zg%A)zRGKd-CCako^GRnq(Z}^941%B{A=h=0rYVFF@H~&17D6CRQ>1AMr4*D>6^Eb* z#&Ha#6!JXB*47qRS8}MLD43{Ul1dncXt&$^0(#i@eQa)S0stO7c)<6PHc8jIEOdrD zolfn(?d@%5mh^0zCW@k9$&#f`I@#3ZjG~Bv9~~XBztZvI#R~wyjT<)*h9MlsVPFRb z2Z-Ys3kwTyT^FWlVlWsWiXvE+1tA3b{eIk_c|#UU=8$C> zlv40KkBwqdF2`zIzd4R$p2TFYLHZ>96NtUNJ+2L#o0}-hvQkxvS$&zOI}S;OWOS@l zilV@)SFbQ0kMZQm6V7J+frbH_aUWZw~$ie=;#Q|W)ngPZXI-TXd?6; zy~UW6%2bUv8VyJ(@$A_%POwLh9`WzDZrwtw)xzQ7Aue6Igfvariz)oB>!RQ9bC{J< zD9e&vhsY2@u&$}vT9$=ovxzLrU|AN*vaCs^23#)`dWa4V4zRkq%AwXBLqBZW=7{KW zA{KR5Ns@#kK=PutAq+zXO`1QE@ia|&0uLWPto%S6gjryuZPoSSkWpQzF>b}Y}`O)us7fLM# zfhK=HQ7ZZaG|*@?Lbuz+U@$-&$MAh08yg!i41>c?$-BF|3*Yy-k0(da*Q_*gBEc{W zc8}q3h(@DPAxmGM9_!;&9EfcxCBA+8#y~bUHh5B0Vb|B!vA({}lh>IgurxUJDU-*v zD0-gvYl~%lCrWn!+LEA^h@OBHUeh%3@#Dv-15uLc;0V0lx6?Ih-U!De<29*tI-N?J zs<)H+KomX#r29OzuzJrC$1$=j<7-7xZ~_V;m_svnSf29#Xv+wcBl$guXED^?F!XSg7fgs-4>xT|P&Lz&Sr2um(?Jjfm1l`<+qNrJ z)Uqs|q#gm1BN@amxr*aBJgB}^F}V}a>-G5Mv~NP?T3;ZcQo_naSLk zRzYiwfB5jBvMW0n4AAX%5d;B0eE05Mj7B5O&(9-@B3_=6#;Nk9X^JFC7+j;#sC1iQ z7;^tlgprd8ArQwg&YwU3`+J8wJ3Cy)Y4&StYqfno-8S{gsjt#0)U@E3T&_{%%Cdy( zy101p;!i>U(rzv7nl3FZvE}Ja6*1H8cA0U{^D4Sc(-f^%3q?^>nkU<~x!on!X`|@O z_Q$_|{mK#0LF>9FCiTi|+cwKXPcT{z>QR}SoBMMc`vm@HJv=R%Cmn=zPWvc&aXWYJ z+;4$C^*5mR@85IsDy7irba<1<^E{RfMTQ(l2*KTFmSvcmoBM6RXY!qMXJ-eWK7Fcf zz3E*eF+OQ$moH!b=f896@>y9~fl>;t>oV9zqk%lnPtETC<;ybFfglKwBnc&F-wIM*Dc1owe`z^kl zliQgQlo#Lk`?{grY41JvInQ~{Ik(EAM~_PUA70v@n)v3;n|!~qv2p72i$7uXwQJXq zrfJtr{LdkN z>+Am>;#aO*=`fBA4}t&yP^;D8x-J0V`}gkv0K+hF>((s*IPnI=Nog@QHimbAZH$eLojz5DhlinQ8XKf(8XAp8#o(Qt z9hjyG+qMA!zVE}fZTP;AX0r*`b$O1xy*-$w$@EfH6+#FM4-a!3eEIU_?;%csr)e55 zOvuW#pau8$_u>0K-_yHvwOXwX#nE*g05}#-j5zU5Q4}Oe0$tbHFyHs#I1W>QHsHE0 zq9}rg(?m~C5081Chb+rb6a@$O<;#~*uh&r&1>U`TcRb?6 zVE{;y1OO_FSeDf>MvL|K_I4m_Sr$}PMV4jAvW(I8eIMJ~+t}XT?vP4FQJ`rWgEKNR zf{~GtqYdxv?S-nUP*s%|iJ}N$7$OWq06Q_I0O0G_ zuK<9dp&_`g%YjTrudS`2EXxYrj#U-gw(;Y~4>X%iG@DHxcU>2IdwT$YGiT1Qp@cf2 zn`IdzOq?eQ5Jg!reZQDqa1VRWnj>AX`A&?{qk|aS< z6ex>zBx{7u>gp;QjRvwTQ%m{XKdSMBX)LnI5#XWFQY8W z%KL<@+~&!OLsTK4jzm1qbG&`~7Ohqb4WQ ztQMN4;qdSfmSsT*!KH&7c(f52D0=Q#s?Y?Qrs3twmppdo&K)jUgCIapPY)Is7f}=i zW@l$vi%B+Z+s69(I@7Kw3Y2BZszXQ%A(+>cZFOCTWm!nm6uPdXEXxjM>7a_7DB4{V zh9NIX+;6`~_uETXLQz%~N-%PLL$o1omt~1GO)GQ#6!9cUcmwzD-K+fX`#xU1dQ~ZZ zgCMBruZ)h&X##?bE6Wmjo_D17IF31y$+S7r@GuN9KR?epoaZ^yf+m}rn?stWSXx?Q z&Aof~E&yP6cNeBqkRQ3_Afw4&KrmZ2<5D2jqS&zWje%lp31)IE|a?R_HvEG{nc z*yQA7M|Upwi$g<0U8&NIe)PLsg%Z`sXwvs%6OjA@)xlF!Q|!j2r6ttsb4F-;SztE-hJpxJCm5`x0Xe{1tyYKOU8_UWG+I9s~j=Q&4}DMtE!5!EGrw~b8d+$2tybfhNYfO)@58dJN^?z0CWJr~ML2){{O_L~Zf$LG z8mHYi8jVV`8-^h_&+VC0?$XKCX_|I4B&w=1Ey}WlZQHnb@#0U7{-x7eIyD_09>)Fq z_jv;p?Su@;rRRBY9H+wDBuUWI(}O(EE5(yx7+mfW>U2L~#;yFpEe7t<_+_~Q}`o!OW-oJm(!CMps z`uqEt=Z@nrZOAipQY(buY@4Pj1_lOx+u&3A&bhUDyMn^|c6a_cdB!gL&ofzGJ03 z&ABrb#E(~beUj&FsN;NG=Q`JY-PfGa9zJ{+@DCgj{-NVv;HN#Jr}?n{{(b;7P2=_J z*MB$g{{DWF$s_=uKYs=w7K?HH`gMR`oHA)5vDCT)uqy|0k8Mt}ark6ab}Ci9{kn zsZ?Trf1h+ZO*H!7$L;R!Vp$fR=K-MWI*~|(j*bp2%L3rz$B(DOcvn{!0DF6Tlu9M} z4G3T*5kNo#n5GFpI-Ncp#xGvH2tc`92B2E45{*W2U6*Jyie*{2t}DO*48y>(EGbxk zVzG$px-2g*69fU}a+&kz&;J?V*=&~G-CY108X5p-Y;5H4@UV{Icsve(>$<|O=XsP$ zB`TE)0E>%@=(-NT$jAr)Gcz-^x3~XZsa(B!_2`Wv5&7%;K7i=8R;yv#wya8cmBK?= zE6u-q_fGC} z|Neadrl+Un+FQ473E*F5Jd??Y_B2fso!Yi74xnVAoFp2J3hPQL;SL#=!|d!VzV9U zaxzIZktCdwV;DLP4%o&h+HT6DjZ$fh#`_KUnEg0Zk+lG8xOVNTpKZ5a9w` zUtgDFqobqPw$00zFJ%RXhK2xGSy_>5ve_&Eg+c+tFaYT7?FHb|r%&Gou5_s^PO+R$ zr=@v>yQ3;lrR(+eb)wNIx~`MSWaPeuLV;*B%J}&B5veG!Y7zjqZ{L<<^YioQx=veL z+sSqqX7AwOfP;gBI#2d}zfRk>ZPVP`OmlOyT-VpvM?4-U9*+z2-QC@6ZEcBn0}Kxj z3pwh%@$qq4)up8+S)mi95|796JWn*HSdPcz%+Ag-K0Yq&nx;u>Yb&nnGB-B|Ku=E( z01FEX($*ErN+tjU0|Rm_5{ZyZCPg~=d|vWPsZ^@#yg%eB%0-ktH8eCZH8my67|t6* zLqnp|SFc`SnkLt-U6cCw@Zm$9UaQqA@87?#>z37Om9@1sDRSjh%Gpi??s*=%u8S|f zc=19mRyR`BpUdSW0V?}jSXcmHVqyZ3;4c| zVHnbFP17VEkK;IwOeDPe#{#!3OBhstmBWO`jT<*a|KVX6h7?}d8I*4O`uaqMb8~aV zlX2C?!?qaKSuU5uaU7PGme6&bp`jsh0ktaGY!*$^$mjD? zT&ioTi3LF*(hS#>ZQIhw!m>FLc%@Pyl}gD4>ZWSB4Z{$P4-O7eE|)15i{i06J3I9B z^sutBLJ$Oujg3ho$>;O%Ne}5mtFzV_jYz!xA zT;*ibG({F+?^c$lnhn6?$B$)oT-U8jh6=3GbG2Hni@{%KobX7cQb#}^3w(2Plg`f0 zy8NL!+SJq(0Lf&Mk&zKu8I}I--o1f3JS2}IC9MM zJSjj0UWGc}_emy`C%*L`3w&c^gZ}=0JkJw`!aGj$^YZ{)x^#(eO9$~T~mjSY#qzVFlA+$@_!D=RBBH8pYe z?AgEftD9m!lgY?_$e&{Pk9jQ;@2G%xa*T(5!v0000mklkjTQ3%EXh*#+A*-md?nR(8`(7%bL>6o72sl)XkmM&YsrK zpV!c!*wLZc(xTeaqubP^+|{Ms)u!Fnrr+48;Mu9++Nx_E#*6>}010qNS#tmY3ljhU z3ljkVnw%H_000McNliru-vbr{FBgvIbvgh50J=#;K~xyi4Ub!PgD?z4)j%NF1Q}~2 zs}kM+HtXLzbLK&?aw(*3MXafwWUck}3iKYxRtETBmv zCWOeZ@O_ZM(!o1e#PkYc^~C-eP>;aO0MhF=+#@pu*91dWn`%C3#||=UKjP^bDeGH| z(BI|*FsqArD7`j!-jB-Vi0~QU?;i-fHIW00000NkvXXu0mjf&`P%* literal 0 HcmV?d00001