From: Elias Fleckenstein Date: Mon, 1 Jun 2020 14:17:43 +0000 (+0200) Subject: Initial Commit X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=65b1cadea4fc4798c4ac52ba670a1f32615ca643;p=default.git Initial Commit --- 65b1cadea4fc4798c4ac52ba670a1f32615ca643 diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..080653d --- /dev/null +++ b/init.lua @@ -0,0 +1,554 @@ +local aliases = { + ["chest"] = "mcl_chests:chest", + ["chest_locked"] = "mcl_chests:chest", + ["blueberries"] = "mcl_farming:beetroot", + ["book"] = "mcl_books:book", + ["written_book"] = "mcl_books:book_written", + ["bronze_ingot"] = "mcl_core:iron_ingot", + ["clay_brick"] = "mcl_core:brick", + ["clay_lump"] = "mcl_core:clay_lump", + ["coal_lump"] = "mcl_core:coal_lump", + ["copper_ingot"] = "mcl_core:iron_ingot", + ["copper_lump"] = "mcl_core:stone_with_iron", + ["diamond"] = "mcl_core:diamond", + ["flint"] = "mcl_core:flint", + ["gold_ingot"] = "mcl_core:gold_ingot", + ["gold_lump"] = "mcl_core:stone_with_gold", + ["iron_lump"] = "mcl_core:stone_with_iron", + ["mese_crystal"] = "mcl_core:gold_ingot", + ["mese_crystal_fragment"] = "mcl_core:gold_nugget", + ["obsidian_shard"] = "mcl_core:obsidian", + ["paper"] = "mcl_core:paper", + ["steel_ingot"] = "mcl_core:iron_ingot", + ["stick"] = "mcl_core:stick", + ["tin_ingot"] = "mcl_core:iron_ingot", + ["tin_lump"] = "mcl_core:stone_with_iron", + ["stone"] = "mcl_core:stone", + ["cobble"] = "mcl_core:cobble", + ["stonebrick"] = "mcl_core:stonebrick", + ["stone_block"] = "mcl_core:stonebrick", + ["mossycobble"] = "mcl_core:mossycobble", + ["desert_stone"] = "mcl_core:redsandstone", + ["desert_cobble"] = "mcl_core:redsandstone", + ["desert_stonebrick"] = "mcl_core:redsandstonecarved", + ["desert_stone_block"] = "mcl_core:redsandstonecarved", + ["sandstone"] = "mcl_core:sandstone", + ["sandstonebrick"] = "mcl_core:sandstonecarved", + ["sandstone_block"] = "mcl_core:sandstonecarved", + ["desert_sandstone"] = "mcl_core:redsandstone", + ["desert_sandstone_brick"] = "mcl_core:redsandstonecarved", + ["desert_sandstone_block"] = "mcl_core:redsandstonecarved", + ["silver_sandstone"] = "mcl_core:sandstone", + ["silver_sandstonebrick"] = "mcl_core:sandstonecarved", + ["silver_sandstone_block"] = "mcl_core:sandstonecarved", + ["obsidian"] = "mcl_core:obsidian", + ["obsidianbrick"] = "mcl_core:obsidian", + ["obsidian_block"] = "mcl_core:obsidian", + ["dirt"] = "mcl_core:dirt", + ["dirt_with_grass"] = "mcl_core:dirt_with_grass", + ["dirt_with_grass_footsteps"] = "mcl_core:dirt_with_grass", + ["dirt_with_dry_grass"] = "mcl_core:dirt_with_grass", + ["dirt_with_snow"] = "mcl_core:dirt_with_snow", + ["dirt_with_rainforest_litter"] = "mcl_core:dirt_with_grass", + ["dirt_with_coniferous_litter"] = "mcl_core:dirt_with_grass", + ["dry_dirt"] = "mcl_core:dirt", + ["dry_dirt_with_dry_grass"] = "mcl_core:dirt_with_grass", + ["permafrost"] = "mcl_core:stone", + ["permafrost_with_stones"] = "mcl_core:stone", + ["permafrost_with_moss"] = "mcl_core:stone", + ["sand"] = "mcl_core:sand", + ["desert_sand"] = "mcl_core:redsand", + ["silver_sand"] = "mcl_core:sand", + ["gravel"] = "mcl_core:gravel", + ["clay"] = "mcl_core:clay", + ["snow"] = "mcl_core:snow", + ["snowblock"] = "mcl_core:snowblock", + ["ice"] = "mcl_core:ice", + ["cave_ice"] = "mcl_core:packed_ice", + ["tree"] = "mcl_core:tree", + ["wood"] = "mcl_core:wood", + ["leaves"] = "mcl_core:leaves", + ["sapling"] = "mcl_core:sapling", + ["apple"] = "mcl_core:apple", + ["jungletree"] = "mcl_core:jungletree", + ["junglewood"] = "mcl_core:junglewood", + ["jungleleaves"] = "mcl_core:jungleleaves", + ["junglesapling"] = "mcl_core:junglesapling", + ["emergent_jungle_sapling"] = "mcl_core:junglesapling", + ["pine_tree"] = "mcl_core:sprucetree", + ["pine_wood"] = "mcl_core:sprucewood", + ["pine_needles"] = "mcl_core:spruceleaves", + ["pine_sapling"] = "mcl_core:sprucesapling", + ["acacia_tree"] = "mcl_core:acaciatree", + ["acacia_wood"] = "mcl_core:acaciawood", + ["acacia_leaves"] = "mcl_core:acacialeaves", + ["acacia_sapling"] = "mcl_core:acaciasapling", + ["aspen_tree"] = "mcl_core:birchtree", + ["aspen_wood"] = "mcl_core:birchwood", + ["aspen_leaves"] = "mcl_core:birchleaves", + ["aspen_sapling"] = "mcl_core:birchsapling", + ["stone_with_coal"] = "mcl_core:stone_with_coal", + ["coalblock"] = "mcl_core:coalblock", + ["stone_with_iron"] = "mcl_core:stone_with_iron", + ["steelblock"] = "mcl_core:steelblock", + ["stone_with_copper"] = "mcl_core:stone_with_iron", + ["copperblock"] = "mcl_core:steelblock", + ["stone_with_tin"] = "mcl_core:stone_with_iron", + ["tinblock"] = "mcl_core:steelblock", + ["bronzeblock"] = "mcl_core:steelblock", + ["stone_with_gold"] = "mcl_core:stone_with_gold", + ["goldblock"] = "mcl_core:goldblock", + ["stone_with_mese"] = "mcl_core:stone_with_gold", + ["mese"] = "mcl_core:goldblock", + ["stone_with_diamond"] = "mcl_core:stone_with_iron", + ["cactus"] = "mcl_core:cactus", + ["large_cactus_seedling"] = "mcl_core:cactus", + ["papyrus"] = "mcl_core:reeds", + ["dry_shrub"] = "mcl_core:dead_bush", + ["junglegrass"] = "mcl_flowers:double_tallgrass", + ["grass_1"] = "mcl_flowers:tallgrass", + ["grass_2"] = "mcl_flowers:tallgrass", + ["grass_3"] = "mcl_flowers:tallgrass", + ["grass_4"] = "mcl_flowers:tallgrass", + ["grass_5"] = "mcl_flowers:tallgrass", + ["dry_grass_1"] = "mcl_flowers:tallgrass", + ["dry_grass_2"] = "mcl_flowers:tallgrass", + ["dry_grass_3"] = "mcl_flowers:tallgrass", + ["dry_grass_4"] = "mcl_flowers:tallgrass", + ["dry_grass_5"] = "mcl_flowers:tallgrass", + ["fern_1"] = "mcl_flowers:fern", + ["fern_2"] = "mcl_flowers:fern", + ["fern_3"] = "mcl_flowers:fern", + ["marram_grass_1"] = "mcl_flowers:tallgrass", + ["marram_grass_2"] = "mcl_flowers:tallgrass", + ["marram_grass_3"] = "mcl_flowers:tallgrass", + ["bush_stem"] = "mcl_core:tree", + ["bush_leaves"] = "mcl_core:leaves", + ["bush_sapling"] = "mcl_core:sapling", + ["acacia_bush_stem"] = "mcl_core:acaciatree", + ["acacia_bush_leaves"] = "mcl_core:acacialeaves", + ["acacia_bush_sapling"] = "mcl_core:acaciasapling", + ["pine_bush_stem"] = "mcl_core:sprucetree", + ["pine_bush_leaves"] = "mcl_core:spruceleaves", + ["pine_bush_sapling"] = "mcl_core:sprucesapling", + ["blueberry_bush_leaves_with_berries"] = "mcl_core:leaves", + ["blueberry_bush_leaves"] = "mcl_core:leaves", + ["blueberry_bush_sapling"] = "mcl_core:sapling", + ["sand_with_kelp"] = "mcl_ocean:kelp_sand", + ["coral_brown"] = "mcl_wool:brown", + ["coral_orange"] = "mcl_wool:orange", + ["coral_skeleton"] = "mcl_wool:white", + ["water_source"] = "mcl_core:water_source", + ["water_flowing"] = "mcl_core:water_flowing", + ["river_water_source"] = "mclx_core:river_water_source", + ["river_water_flowing"] = "mclx_core:river_water_flowing", + ["lava_source"] = "mcl_core:lava_source", + ["lava_flowing"] = "mcl_core:lava_flowing", + ["bookshelf"] = "mcl_books:bookshelf", + ["sign_wall_wood"] = "mcl_signs:sign_wall", + ["sign_wall_steel"] = "mcl_signs:sign_wall", + ["ladder_wood"] = "mcl_signs:ladder", + ["ladder_steel"] = "mcl_signs:ladder", + ["fence_wood"] = "mcl_fences:fence", + ["fence_acacia_wood"] = "mcl_fences:fence_acacia", + ["fence_junglewood"] = "mcl_fences:fence_jungle", + ["fence_pine_wood"] = "mcl_fences:fence_spruce", + ["fence_aspen_wood"] = "mcl_fences:fence_birch", + ["fence_rail_wood"] = "mcl_fences:fence", + ["fence_rail_acacia_wood"] = "mcl_fences:fence_acacia", + ["fence_rail_junglewood"] = "mcl_fences:fence_jungle", + ["fence_rail_pine_wood"] = "mcl_fences:fence_spruce", + ["fence_rail_aspen_wood"] = "mcl_fences:fence_birch", + ["glass"] = "mcl_core:glass", + ["obsidian_glass"] = "mcl_core:glass", + ["brick"] = "mcl_core:brick", + ["meselamp"] = "mcl_nether:glowstone", + ["mese_post_light"] = "mcl_nether:glowstone", + ["cloud"] = "mcl_core:bedrock", + ["pick_wood"] = "mcl_tools:pick_wood", + ["pick_stone"] = "mcl_tools:pick_stone", + ["pick_steel"] = "mcl_tools:pick_iron", + ["pick_bronze"] = "mcl_tools:pick_iron", + ["pick_mese"] = "mcl_tools:pick_gold", + ["pick_diamond"] = "mcl_tools:pick_diamond", + ["shovel_wood"] = "mcl_tools:shovel_wood", + ["shovel_stone"] = "mcl_tools:shovel_stone", + ["shovel_steel"] = "mcl_tools:shovel_iron", + ["shovel_bronze"] = "mcl_tools:shovel_iron", + ["shovel_mese"] = "mcl_tools:shovel_gold", + ["shovel_diamond"] = "mcl_tools:shovel_diamond", + ["axe_wood"] = "mcl_tools:axe_wood", + ["axe_stone"] = "mcl_tools:axe_stone", + ["axe_steel"] = "mcl_tools:axe_iron", + ["axe_bronze"] = "mcl_tools:axe_iron", + ["axe_mese"] = "mcl_tools:axe_gold", + ["axe_diamond"] = "mcl_tools:axe_diamond", + ["sword_wood"] = "mcl_tools:sword_wood", + ["sword_stone"] = "mcl_tools:sword_stone", + ["sword_steel"] = "mcl_tools:sword_iron", + ["sword_bronze"] = "mcl_tools:sword_iron", + ["sword_mese"] = "mcl_tools:sword_gold", + ["sword_diamond"] = "mcl_tools:sword_diamond", + ["key"] = "mcl_clock:clock", + ["torch"] = "mcl_torches:torch", + ["torch_wall"] = "mcl_torches:torch_wall", + ["torch_ceiling"] = "mcl_torches:torch", +} +for k, v in pairs(aliases) do + minetest.register_alias("default:" .. k, v) +end + +default = {} + +-- +-- Functions +-- + + +-- +-- Sounds +-- + +function default.node_sound_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name = "", gain = 1.0} + table.dug = table.dug or + {name = "default_dug_node", gain = 0.25} + table.place = table.place or + {name = "default_place_node_hard", gain = 1.0} + return table +end + +function default.node_sound_stone_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name = "default_hard_footstep", gain = 0.3} + table.dug = table.dug or + {name = "default_hard_footstep", gain = 1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_dirt_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name = "default_dirt_footstep", gain = 0.4} + table.dug = table.dug or + {name = "default_dirt_footstep", gain = 1.0} + table.place = table.place or + {name = "default_place_node", gain = 1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_sand_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name = "default_sand_footstep", gain = 0.12} + table.dug = table.dug or + {name = "default_sand_footstep", gain = 0.24} + table.place = table.place or + {name = "default_place_node", gain = 1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_gravel_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name = "default_gravel_footstep", gain = 0.4} + table.dug = table.dug or + {name = "default_gravel_footstep", gain = 1.0} + table.place = table.place or + {name = "default_place_node", gain = 1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_wood_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name = "default_wood_footstep", gain = 0.3} + table.dug = table.dug or + {name = "default_wood_footstep", gain = 1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_leaves_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name = "default_grass_footstep", gain = 0.45} + table.dug = table.dug or + {name = "default_grass_footstep", gain = 0.7} + table.place = table.place or + {name = "default_place_node", gain = 1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_glass_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name = "default_glass_footstep", gain = 0.3} + table.dig = table.dig or + {name = "default_glass_footstep", gain = 0.5} + table.dug = table.dug or + {name = "default_break_glass", gain = 1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_metal_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name = "default_metal_footstep", gain = 0.4} + table.dig = table.dig or + {name = "default_dig_metal", gain = 0.5} + table.dug = table.dug or + {name = "default_dug_metal", gain = 0.5} + table.place = table.place or + {name = "default_place_node_metal", gain = 0.5} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_water_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name = "default_water_footstep", gain = 0.2} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_snow_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name = "default_snow_footstep", gain = 0.2} + table.dig = table.dig or + {name = "default_snow_footstep", gain = 0.3} + table.dug = table.dug or + {name = "default_snow_footstep", gain = 0.3} + table.place = table.place or + {name = "default_place_node", gain = 1.0} + default.node_sound_defaults(table) + return table +end + +-- +-- Optimized helper to put all items in an inventory into a drops list +-- + +function default.get_inventory_drops(pos, inventory, drops) + local inv = minetest.get_meta(pos):get_inventory() + local n = #drops + for i = 1, inv:get_size(inventory) do + local stack = inv:get_stack(inventory, i) + if stack:get_count() > 0 then + drops[n+1] = stack:to_table() + n = n + 1 + end + end +end + + +-- +-- Papyrus and cactus growing +-- + +-- Wrapping the functions in ABM action is necessary to make overriding them possible + +function default.grow_cactus(pos, node) + if node.param2 >= 4 then + return + end + pos.y = pos.y - 1 + if minetest.get_item_group(minetest.get_node(pos).name, "sand") == 0 then + return + end + pos.y = pos.y + 1 + local height = 0 + while node.name == "default:cactus" and height < 4 do + height = height + 1 + pos.y = pos.y + 1 + node = minetest.get_node(pos) + end + if height == 4 or node.name ~= "air" then + return + end + if minetest.get_node_light(pos) < 13 then + return + end + minetest.set_node(pos, {name = "default:cactus"}) + return true +end + +function default.grow_papyrus(pos, node) + pos.y = pos.y - 1 + local name = minetest.get_node(pos).name + if name ~= "default:dirt_with_grass" and name ~= "default:dirt" then + return + end + if not minetest.find_node_near(pos, 3, {"group:water"}) then + return + end + pos.y = pos.y + 1 + local height = 0 + while node.name == "default:papyrus" and height < 4 do + height = height + 1 + pos.y = pos.y + 1 + node = minetest.get_node(pos) + end + if height == 4 or node.name ~= "air" then + return + end + if minetest.get_node_light(pos) < 13 then + return + end + minetest.set_node(pos, {name = "default:papyrus"}) + return true +end + +-- +-- Dig upwards +-- + +function default.dig_up(pos, node, digger) + if digger == nil then return end + local np = {x = pos.x, y = pos.y + 1, z = pos.z} + local nn = minetest.get_node(np) + if nn.name == node.name then + minetest.node_dig(np, nn, digger) + end +end + +-- +-- Leafdecay +-- + +-- Prevent decay of placed leaves + +default.after_place_leaves = function(pos, placer, itemstack, pointed_thing) + if placer and placer:is_player() then + local node = minetest.get_node(pos) + node.param2 = 1 + minetest.set_node(pos, node) + end +end + +-- Leafdecay +local function leafdecay_after_destruct(pos, oldnode, def) + for _, v in pairs(minetest.find_nodes_in_area(vector.subtract(pos, def.radius), + vector.add(pos, def.radius), def.leaves)) do + local node = minetest.get_node(v) + local timer = minetest.get_node_timer(v) + if node.param2 ~= 1 and not timer:is_started() then + timer:start(math.random(20, 120) / 10) + end + end +end + +local function leafdecay_on_timer(pos, def) + if minetest.find_node_near(pos, def.radius, def.trunks) then + return false + end + + local node = minetest.get_node(pos) + local drops = minetest.get_node_drops(node.name) + for _, item in ipairs(drops) do + local is_leaf + for _, v in pairs(def.leaves) do + if v == item then + is_leaf = true + end + end + if minetest.get_item_group(item, "leafdecay_drop") ~= 0 or + not is_leaf then + minetest.add_item({ + x = pos.x - 0.5 + math.random(), + y = pos.y - 0.5 + math.random(), + z = pos.z - 0.5 + math.random(), + }, item) + end + end + + minetest.remove_node(pos) + minetest.check_for_falling(pos) +end + +function default.register_leafdecay(def) + assert(def.leaves) + assert(def.trunks) + assert(def.radius) + for _, v in pairs(def.trunks) do + minetest.override_item(v, { + after_destruct = function(pos, oldnode) + leafdecay_after_destruct(pos, oldnode, def) + end, + }) + end + for _, v in pairs(def.leaves) do + minetest.override_item(v, { + on_timer = function(pos) + leafdecay_on_timer(pos, def) + end, + }) + end +end + + +-- +-- Register a craft to copy the metadata of items +-- + +function default.register_craft_metadata_copy(ingredient, result) + minetest.register_craft({ + type = "shapeless", + output = result, + recipe = {ingredient, result} + }) + + minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) + if itemstack:get_name() ~= result then + return + end + + local original + local index + for i = 1, #old_craft_grid do + if old_craft_grid[i]:get_name() == result then + original = old_craft_grid[i] + index = i + end + end + if not original then + return + end + local copymeta = original:get_meta():to_table() + itemstack:get_meta():from_table(copymeta) + -- put the book with metadata back in the craft grid + craft_inv:set_stack("craft", index, original) + end) +end + + + +function default.can_interact_with_node(player, pos) + if player and player:is_player() then + if minetest.check_player_privs(player, "protection_bypass") then + return true + end + else + return false + end + + local meta = minetest.get_meta(pos) + local owner = meta:get_string("owner") + + if not owner or owner == "" or owner == player:get_player_name() then + return true + end + + return false +end diff --git a/mod.conf b/mod.conf new file mode 100644 index 0000000..8335e41 --- /dev/null +++ b/mod.conf @@ -0,0 +1,3 @@ +name = default +author = Fleckenstein +description = The default mod for mineclone. It registeres aliases in the default: namespace to their mineclone equivalents diff --git a/schematics/acacia_bush.mts b/schematics/acacia_bush.mts new file mode 100644 index 0000000..3322e3b Binary files /dev/null and b/schematics/acacia_bush.mts differ diff --git a/schematics/acacia_log.mts b/schematics/acacia_log.mts new file mode 100644 index 0000000..aff3bd6 Binary files /dev/null and b/schematics/acacia_log.mts differ diff --git a/schematics/acacia_tree.mts b/schematics/acacia_tree.mts new file mode 100644 index 0000000..9b23498 Binary files /dev/null and b/schematics/acacia_tree.mts differ diff --git a/schematics/acacia_tree_from_sapling.mts b/schematics/acacia_tree_from_sapling.mts new file mode 100644 index 0000000..c32a995 Binary files /dev/null and b/schematics/acacia_tree_from_sapling.mts differ diff --git a/schematics/apple_log.mts b/schematics/apple_log.mts new file mode 100644 index 0000000..92fb900 Binary files /dev/null and b/schematics/apple_log.mts differ diff --git a/schematics/apple_tree.mts b/schematics/apple_tree.mts new file mode 100644 index 0000000..d56cd54 Binary files /dev/null and b/schematics/apple_tree.mts differ diff --git a/schematics/apple_tree_from_sapling.mts b/schematics/apple_tree_from_sapling.mts new file mode 100644 index 0000000..2325100 Binary files /dev/null and b/schematics/apple_tree_from_sapling.mts differ diff --git a/schematics/aspen_log.mts b/schematics/aspen_log.mts new file mode 100644 index 0000000..d0c723d Binary files /dev/null and b/schematics/aspen_log.mts differ diff --git a/schematics/aspen_tree.mts b/schematics/aspen_tree.mts new file mode 100644 index 0000000..429a831 Binary files /dev/null and b/schematics/aspen_tree.mts differ diff --git a/schematics/aspen_tree_from_sapling.mts b/schematics/aspen_tree_from_sapling.mts new file mode 100644 index 0000000..b7ab3ee Binary files /dev/null and b/schematics/aspen_tree_from_sapling.mts differ diff --git a/schematics/blueberry_bush.mts b/schematics/blueberry_bush.mts new file mode 100644 index 0000000..cf4d8ef Binary files /dev/null and b/schematics/blueberry_bush.mts differ diff --git a/schematics/bush.mts b/schematics/bush.mts new file mode 100644 index 0000000..d08cf5f Binary files /dev/null and b/schematics/bush.mts differ diff --git a/schematics/emergent_jungle_tree.mts b/schematics/emergent_jungle_tree.mts new file mode 100644 index 0000000..b526430 Binary files /dev/null and b/schematics/emergent_jungle_tree.mts differ diff --git a/schematics/emergent_jungle_tree_from_sapling.mts b/schematics/emergent_jungle_tree_from_sapling.mts new file mode 100644 index 0000000..cb4e4e9 Binary files /dev/null and b/schematics/emergent_jungle_tree_from_sapling.mts differ diff --git a/schematics/jungle_log.mts b/schematics/jungle_log.mts new file mode 100644 index 0000000..34dca43 Binary files /dev/null and b/schematics/jungle_log.mts differ diff --git a/schematics/jungle_tree.mts b/schematics/jungle_tree.mts new file mode 100644 index 0000000..fe93c8c Binary files /dev/null and b/schematics/jungle_tree.mts differ diff --git a/schematics/jungle_tree_from_sapling.mts b/schematics/jungle_tree_from_sapling.mts new file mode 100644 index 0000000..f32d312 Binary files /dev/null and b/schematics/jungle_tree_from_sapling.mts differ diff --git a/schematics/large_cactus.mts b/schematics/large_cactus.mts new file mode 100644 index 0000000..cadcdcc Binary files /dev/null and b/schematics/large_cactus.mts differ diff --git a/schematics/papyrus_on_dirt.mts b/schematics/papyrus_on_dirt.mts new file mode 100644 index 0000000..1333a7c Binary files /dev/null and b/schematics/papyrus_on_dirt.mts differ diff --git a/schematics/papyrus_on_dry_dirt.mts b/schematics/papyrus_on_dry_dirt.mts new file mode 100644 index 0000000..3626580 Binary files /dev/null and b/schematics/papyrus_on_dry_dirt.mts differ diff --git a/schematics/pine_bush.mts b/schematics/pine_bush.mts new file mode 100644 index 0000000..ca572a7 Binary files /dev/null and b/schematics/pine_bush.mts differ diff --git a/schematics/pine_log.mts b/schematics/pine_log.mts new file mode 100644 index 0000000..d51a489 Binary files /dev/null and b/schematics/pine_log.mts differ diff --git a/schematics/pine_tree.mts b/schematics/pine_tree.mts new file mode 100644 index 0000000..c80532a Binary files /dev/null and b/schematics/pine_tree.mts differ diff --git a/schematics/pine_tree_from_sapling.mts b/schematics/pine_tree_from_sapling.mts new file mode 100644 index 0000000..0800387 Binary files /dev/null and b/schematics/pine_tree_from_sapling.mts differ diff --git a/schematics/small_pine_tree.mts b/schematics/small_pine_tree.mts new file mode 100644 index 0000000..b283226 Binary files /dev/null and b/schematics/small_pine_tree.mts differ diff --git a/schematics/small_pine_tree_from_sapling.mts b/schematics/small_pine_tree_from_sapling.mts new file mode 100644 index 0000000..a1b1170 Binary files /dev/null and b/schematics/small_pine_tree_from_sapling.mts differ diff --git a/schematics/snowy_pine_tree_from_sapling.mts b/schematics/snowy_pine_tree_from_sapling.mts new file mode 100644 index 0000000..3d502a3 Binary files /dev/null and b/schematics/snowy_pine_tree_from_sapling.mts differ diff --git a/schematics/snowy_small_pine_tree_from_sapling.mts b/schematics/snowy_small_pine_tree_from_sapling.mts new file mode 100644 index 0000000..d017c9e Binary files /dev/null and b/schematics/snowy_small_pine_tree_from_sapling.mts differ