From a93139d3f77950b76c070390111eb80b1277917c Mon Sep 17 00:00:00 2001
From: tchncs <tchncs@vivaldi.net>
Date: Mon, 22 Aug 2016 18:24:45 +0200
Subject: [PATCH] redwood meets gitlab

---
 depends.txt                    |   3 +
 init.lua                       |  24 ++++
 leaves.lua                     |  29 +++++
 license.txt                    |  14 +++
 locale/de.txt                  | 220 +++++++++++++++++++++++++++++++++
 locale/template.txt            | 218 ++++++++++++++++++++++++++++++++
 sapling.lua                    | 112 +++++++++++++++++
 schematics/redwood.mts         | Bin 0 -> 1159 bytes
 schematics/redwood_tree.mts    | Bin 0 -> 1373 bytes
 textures/redwood_leaves.png    | Bin 0 -> 969 bytes
 textures/redwood_sapling.png   | Bin 0 -> 226 bytes
 textures/redwood_trunk.png     | Bin 0 -> 867 bytes
 textures/redwood_trunk_top.png | Bin 0 -> 822 bytes
 textures/redwood_wood.png      | Bin 0 -> 654 bytes
 wood.lua                       |  31 +++++
 15 files changed, 651 insertions(+)
 create mode 100644 depends.txt
 create mode 100644 init.lua
 create mode 100644 leaves.lua
 create mode 100644 license.txt
 create mode 100644 locale/de.txt
 create mode 100644 locale/template.txt
 create mode 100644 sapling.lua
 create mode 100644 schematics/redwood.mts
 create mode 100644 schematics/redwood_tree.mts
 create mode 100644 textures/redwood_leaves.png
 create mode 100644 textures/redwood_sapling.png
 create mode 100644 textures/redwood_trunk.png
 create mode 100644 textures/redwood_trunk_top.png
 create mode 100644 textures/redwood_wood.png
 create mode 100644 wood.lua

diff --git a/depends.txt b/depends.txt
new file mode 100644
index 0000000..3cc6790
--- /dev/null
+++ b/depends.txt
@@ -0,0 +1,3 @@
+default
+stairs
+intllib?
diff --git a/init.lua b/init.lua
new file mode 100644
index 0000000..153dd5d
--- /dev/null
+++ b/init.lua
@@ -0,0 +1,24 @@
+--
+--    Redwood tree from https://github.com/tenplus1/ethereal
+--
+
+redwood = {}
+-- Intllib
+local S
+if minetest.get_modpath("intllib") then
+	S = intllib.Getter()
+else
+	S = function(s) return s end
+end
+redwood.intllib = S
+
+local path = minetest.get_modpath("redwood")
+
+dofile(path .. "/leaves.lua")
+dofile(path .. "/wood.lua")
+dofile(path .. "/sapling.lua")
+
+minetest.register_alias("ethereal:redwood_trunk", "redwood:redwood_trunk")
+minetest.register_alias("ethereal:redwood_leaves", "redwood:redwood_leaves")
+
+print (S("[MOD] Redwood loaded"))
diff --git a/leaves.lua b/leaves.lua
new file mode 100644
index 0000000..71f1616
--- /dev/null
+++ b/leaves.lua
@@ -0,0 +1,29 @@
+
+local S = redwood.intllib
+
+-- set leaftype (value inside init.lua)
+local leaftype = "plantlike"
+
+-- redwood leaves
+minetest.register_node("redwood:redwood_leaves", {
+	description = S("Redwood Leaves"),
+	drawtype = leaftype,
+	visual_scale = 1.2,
+	tiles = {"redwood_leaves.png"},
+	inventory_image = "redwood_leaves.png",
+	wield_image = "redwood_leaves.png",
+	paramtype = "light",
+	walkable = redwood.leafwalk,
+	waving = 1,
+	groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2},
+	drop = {
+		max_items = 1,
+		items = {
+			{items = {"redwood:redwood_sapling"}, rarity = 50},
+			{items = {"redwood:redwood_leaves"}}
+		}
+	},
+	sounds = default.node_sound_leaves_defaults(),
+	after_place_node = default.after_place_leaves,
+})
+
diff --git a/license.txt b/license.txt
new file mode 100644
index 0000000..5d30c14
--- /dev/null
+++ b/license.txt
@@ -0,0 +1,14 @@
+
+            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+                    Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. You just DO WHAT THE FUCK YOU WANT TO. 
\ No newline at end of file
diff --git a/locale/de.txt b/locale/de.txt
new file mode 100644
index 0000000..9c9c9d7
--- /dev/null
+++ b/locale/de.txt
@@ -0,0 +1,220 @@
+# German Translation for ethereal mod
+# Deutsche Ãœbersetzung der ethereal Mod
+# last update: 2016/May/25
+# Author: Xanthin
+
+#bonemeal.lua
+Bone = Knochen
+Bone Meal = Knochenmehl
+
+#crystal.lua
+Crystal Spike = Kristallnadel
+Crystal Ingot = Kristallbarren
+Crystal Block = Kristallblock
+Crystal Sword = Kristallschwert
+Crystal Axe = Kristallaxt
+Crystal Pickaxe = Kristallspitzhacke
+Crystal (soft touch) Shovel = Kristallschaufel (Behutsamkeit)
+Crystal Gilly Staff = Kristallener Gilly-Stab
+
+#dirt.lua
+Green Dirt = Grüne Erde
+Dried Dirt = Vertrocknete Erde
+Bamboo Dirt = Bambuserde
+Jungle Dirt = Tropenerde
+Grove Dirt = Hainerde
+Prairie Dirt = Prärieerde
+Cold Dirt = Kalte Erde
+Crystal Dirt = Kristallerde
+Mushroom Dirt = Pilzerde
+Fiery Dirt = Feuerrote Erde
+Gray Dirt = Graue Erde
+Red Baked Clay = Roter gebrannter Ton
+Orange Baked Clay = Oranger gebrannter Ton
+Grey Baked Clay = Grauer gebrannter Ton
+Quicksand = Treibsand
+
+#extra.lua
+Bamboo Floor = Bambusboden
+Palm Wax = Palmwachs
+Candle = Kerze
+Bowl = Schale
+Stone Ladder = Steinleiter
+Paper Wall = Papierwand
+Glo Stone = Leuchtstein
+Lump of Charcoal = Holzkohlestück
+Staff of Light = Stab des Lichts
+
+#fences.lua
+Scorched Fence = Verbrannter Zaun
+Frost Fence = Frostzaun
+Redwood Fence = Mammutbaumzaun
+Willow Fence = Weidenzaun
+Healing Wood Fence = Lebensholzzaun
+Palm Fence = Palmzaun
+Banana Wood Fence = Bananenholzzaun
+Mushroom Fence = Pilzzaun
+Birch Fence = Birkenzaun
+
+#fishing.lua
+Raw Fish = Roher Fisch
+Cooked Fish = Gekochter Fisch
+Sashimi = Sashimi
+Worm = Wurm
+Fishing Rod = Angelrute
+Baited Fishing Rod = Angelrute mit Köder
+Inventory full, Fish Got Away! = Inventar voll, Fisch entkam!
+
+#food.lua
+Banana = Banane
+Banana Dough = Bananenteig
+Orange = Orange
+Pine Nuts = Pinienkerne
+Banana Loaf = Bananenbrot
+Coconut = Kokosnuss
+Coconut Slice = Kokosscheibe
+Golden Apple = Goldener Apfel 
+Hearty Stew = Deftiger Eintopf
+Bucket of Cactus Pulp = Eimer Kaktusmark
+
+#gates.lua
+Scorched Wood Fence Gate = Verbranntes Holzzauntor
+Frost Wood Fence Gate = Frostholzzauntor
+Redwood Fence Gate = Mammutbaumzauntor
+Willow Wood Fence Gate = Weidenholztor
+Healing Wood Fence Gate = Lebensholzzauntor
+Palm Wood Fence Gate = Palmholzzauntor
+Banana Wood Fence Gate = Bananenholzzauntor
+Mushroom Trunk Fence Gate = Pilzstammzauntor
+Birch Wood Fence Gate = Birkenholzzauntor
+
+#init.lua
+[MOD] Ethereal loaded = [MOD] Ethereal geladen
+
+#leaves.lua
+Willow Twig = Weidenrute
+Redwood Leaves = Mammutbaumlaub
+Orange Leaves = Orangenlaub
+Banana Leaves = Bananenblätter
+Healing Tree Leaves = Lebensbaumlaub
+Palm Leaves = Palmenblätter
+Birch Leaves = Birkenlaub
+Frost Leaves = Frostlaub
+Bamboo Leaves = Bambuslaub
+Mushroom Cap = Pilzkappe
+Mushroom Pore = Pilzpore
+Bush = Busch
+Bush #2 = Busch #2
+Bush #3 = Busch #3
+
+#mushroom.lua
+Mushroom Soup = Pilzsuppe
+
+#onion.lua
+Wild Onion = Wilde Zwiebel
+
+#plantlife.lua
+Fire Flower = Feuerblume
+Fire Dust = Feuerstaub
+Vine = Weinrebe
+Light String Vine = Leuchtschnurrebe
+Fern = Farn
+Fern Tubers = Farnsporenkapseln
+Fiery Dry Shrub = Feuerroter vertrockneter Strauch
+Snowy Grass = Verschneites Gras
+Crystal Grass = Kristallgras
+Crystal Moss = Kristallmoos
+Mushroom Moss = Pilzmoos
+Fiery Moss = Feuerrotes Moos
+Gray Moss = Graues Moos
+Green Moss = Grünes Moos
+Red Illumishroom = Roter Leuchtpilz
+Green Illumishroom = Grüner Leuchtpilz
+Cyan Illumishroom = Türkiser Leuchtpilz
+
+#sapling.lua
+Bamboo Sprout = Bambussprosse
+Willow Tree Sapling = Weidenbaumsetzling
+Healing Tree Sapling = Lebensbaumsetzling
+Apple Tree Sapling = Apfelbaumsetzling
+Jungle Tree Sapling = Tropenbaumsetzling
+Pine Tree Sapling = Piniensetzling
+Big Tree Sapling = Großer-Baum-Setzling
+Banana Tree Sapling = Bananensetzling
+Frost Tree Sapling = Frostbaumsetzling
+Mushroom Tree Sapling = Pilzbaumsetzling
+Palm Tree Sapling = Palmensetzling
+Redwood Tree Sapling = Mammutbaumsetzling
+Orange Tree Sapling = Orangenbaumsetzling
+Acacia Tree Sapling = Akaziensetzling
+Birch Tree Sapling = Birkensetzling
+Schematic not found = Schema nicht gefunden
+
+#sealife.lua
+Seaweed = Seetang
+Blue Coral = Blaue Koralle
+Orange Coral = Orange Koralle
+Pink Coral = Rosa Koralle
+Green Coral = Grüne Koralle
+Sandy = Sandy
+
+#stairs.lua
+Crystal Block Stair = Kristallblocktreppe
+Crystal Block Slab = Kristallblockplatte
+Ice Brick Stair = Eisziegeltreppe
+Ice Brick Slab = Eisziegelplatte
+Snow Brick Stair = Schneeziegeltreppe
+Snow Brick Slab = Schneeziegelplatte
+Dry Dirt Stair = Vertrocknete Erdtreppe
+Dry Dirt Slab = vertrocknete Erdplatte
+Mushroom Trunk Stair = Pilzstammtreppe
+Mushroom Trunk Slab = Pilzstammplatte
+Mushroom Top Stair = Pilzkappentreppe
+Mushroom Top Slab = Pilzkappenplatte
+Frost Wood Stair = Frostholztreppe
+Frost Wood Slab = Frostholzplatte
+Healing Wood Stair = Lebensholztreppe
+Healing Wood Slab = Lebensholzplatte
+Palm Wood Stair = Palmholztreppe
+Palm Wood Slab = Palmholzplatte
+Birch Wood Stair = Birkenholztreppe
+Birch Wood Slab = Birkenholzplatte
+Banana Wood Stair = Bananenholztreppe
+Banana Wood Slab = Bananenholzplatte
+Willow Wood Stair = Weidenholztreppe
+Willow Wood Slab = Weidenholzplatte
+Redwood Stair = Mammutbaumtreppe
+Redwood Slab = Mammutbaumplatte
+Bamboo Stair = Bambustreppe
+Bamboo Slab = Bambusplatte
+Dry Dirt = Vertrocknete Erde
+Mushroom Trunk = Pilzstamm
+Mushroom Top = Pilzkappe
+Healing Wood = Lebensholz
+Redwood = Mammutbaum
+
+#strawberry.lua
+Strawberry = Erdbeere
+
+#water.lua
+Ice Brick = Eisziegel
+Snow Brick = Schneeziegel
+
+#wood.lua
+Willow Trunk = Weidenstamm
+Willow Wood = Weidenholz
+Redwood Trunk = Mammutbaumstamm
+Redwood Wood = Mammutbaumholz
+Frost Tree = Frostbaum
+Frost Wood = Frostholz
+Healing Tree Trunk = Lebensbaumstamm
+Healing Tree Wood = Lebensbaumholz
+Palm Trunk = Palmstamm
+Palm Wood = Palmholz
+Banana Trunk = Bananenstamm
+Banana Wood = Bananenholz
+Scorched Tree = Verbrannter Baum
+Mushroom = Pilz
+Birch Trunk = Birkenstamm
+Birch Wood = Birkenholz
+Bamboo = Bambus
\ No newline at end of file
diff --git a/locale/template.txt b/locale/template.txt
new file mode 100644
index 0000000..d9a795e
--- /dev/null
+++ b/locale/template.txt
@@ -0,0 +1,218 @@
+# Template for translations of ethereal mod
+# last update: 2016/May/25
+
+#bonemeal.lua
+Bone = 
+Bone Meal = 
+
+#crystal.lua
+Crystal Spike = 
+Crystal Ingot = 
+Crystal Block = 
+Crystal Sword = 
+Crystal Axe = 
+Crystal Pickaxe = 
+Crystal (soft touch) Shovel = 
+Crystal Gilly Staff = 
+
+#dirt.lua
+Green Dirt = 
+Dried Dirt = 
+Bamboo Dirt = 
+Jungle Dirt = 
+Grove Dirt = 
+Prairie Dirt = 
+Cold Dirt = 
+Crystal Dirt = 
+Mushroom Dirt = 
+Fiery Dirt = 
+Gray Dirt = 
+Red Baked Clay = 
+Orange Baked Clay = 
+Grey Baked Clay = 
+Quicksand = 
+
+#extra.lua
+Bamboo Floor = 
+Palm Wax = 
+Candle = 
+Bowl = 
+Stone Ladder = 
+Paper Wall = 
+Glo Stone = 
+Lump of Charcoal = 
+Staff of Light = 
+
+#fences.lua
+Scorched Fence = 
+Frost Fence = 
+Redwood Fence = 
+Willow Fence = 
+Healing Wood Fence = 
+Palm Fence = 
+Banana Wood Fence = 
+Mushroom Fence = 
+Birch Fence = 
+
+#fishing.lua
+Raw Fish = 
+Cooked Fish = 
+Sashimi = 
+Worm = 
+Fishing Rod = 
+Baited Fishing Rod = 
+Inventory full, Fish Got Away! = 
+
+#food.lua
+Banana = 
+Banana Dough = 
+Orange = 
+Pine Nuts = 
+Banana Loaf = 
+Coconut = 
+Coconut Slice = 
+Golden Apple = 
+Hearty Stew = 
+Bucket of Cactus Pulp = 
+
+#gates.lua
+Scorched Wood Fence Gate = 
+Frost Wood Fence Gate = 
+Redwood Fence Gate = 
+Willow Wood Fence Gate = 
+Healing Wood Fence Gate = 
+Palm Wood Fence Gate = 
+Banana Wood Fence Gate = 
+Mushroom Trunk Fence Gate = 
+Birch Wood Fence Gate = 
+
+#init.lua
+[MOD] Ethereal loaded = 
+
+#leaves.lua
+Willow Twig = 
+Redwood Leaves = 
+Orange Leaves = 
+Banana Leaves = 
+Healing Tree Leaves = 
+Palm Leaves = 
+Birch Leaves = 
+Frost Leaves = 
+Bamboo Leaves = 
+Mushroom Cap = 
+Mushroom Pore = 
+Bush = 
+Bush #2 = 
+Bush #3 = 
+
+#mushroom.lua
+Mushroom Soup = 
+
+#onion.lua
+Wild Onion = 
+
+#plantlife.lua
+Fire Flower = 
+Fire Dust = 
+Vine = 
+Light String Vine = 
+Fern = 
+Fern Tubers = 
+Fiery Dry Shrub = 
+Snowy Grass = 
+Crystal Grass = 
+Crystal Moss = 
+Mushroom Moss = 
+Fiery Moss = 
+Gray Moss = 
+Green Moss = 
+Red Illumishroom = 
+Green Illumishroom = 
+Cyan Illumishroom = 
+
+#sapling.lua
+Bamboo Sprout = 
+Willow Tree Sapling = 
+Healing Tree Sapling = 
+Apple Tree Sapling = 
+Jungle Tree Sapling = 
+Pine Tree Sapling = 
+Big Tree Sapling = 
+Banana Tree Sapling = 
+Frost Tree Sapling = 
+Mushroom Tree Sapling = 
+Palm Tree Sapling = 
+Redwood Tree Sapling = 
+Orange Tree Sapling = 
+Acacia Tree Sapling = 
+Birch Tree Sapling = 
+Schematic not found = 
+
+#sealife.lua
+Seaweed = 
+Blue Coral = 
+Orange Coral = 
+Pink Coral = 
+Green Coral = 
+Sandy = 
+
+#stairs.lua
+Crystal Block Stair = 
+Crystal Block Slab = 
+Ice Brick Stair = 
+Ice Brick Slab = 
+Snow Brick Stair = 
+Snow Brick Slab = 
+Dry Dirt Stair = 
+Dry Dirt Slab = 
+Mushroom Trunk Stair = 
+Mushroom Trunk Slab = 
+Mushroom Top Stair = 
+Mushroom Top Slab = 
+Frost Wood Stair = 
+Frost Wood Slab = 
+Healing Wood Stair = 
+Healing Wood Slab = 
+Palm Wood Stair = 
+Palm Wood Slab = 
+Birch Wood Stair = 
+Birch Wood Slab = 
+Banana Wood Stair = 
+Banana Wood Slab = 
+Willow Wood Stair = 
+Willow Wood Slab = 
+Redwood Stair = 
+Redwood Slab = 
+Bamboo Stair = 
+Bamboo Slab = 
+Dry Dirt = 
+Mushroom Trunk = 
+Mushroom Top = 
+Healing Wood = 
+Redwood = 
+
+#strawberry.lua
+Strawberry = 
+
+#water.lua
+Ice Brick = 
+Snow Brick = 
+
+#wood.lua
+Willow Trunk = 
+Willow Wood = 
+Redwood Trunk = 
+Redwood Wood = 
+Frost Tree = 
+Frost Wood = 
+Healing Tree Trunk = 
+Healing Tree Wood = 
+Palm Trunk = 
+Palm Wood = 
+Banana Trunk = 
+Banana Wood = 
+Scorched Tree = 
+Mushroom = 
+Birch Trunk = 
+Birch Wood = 
+Bamboo = 
\ No newline at end of file
diff --git a/sapling.lua b/sapling.lua
new file mode 100644
index 0000000..18c1afb
--- /dev/null
+++ b/sapling.lua
@@ -0,0 +1,112 @@
+
+local S = redwood.intllib
+
+-- Register Saplings
+redwood.register_sapling = function(name, desc, texture, height)
+
+	minetest.register_node(name .. "_sapling", {
+		description = S(desc .. " Tree Sapling"),
+		drawtype = "plantlike",
+		visual_scale = 1.0,
+		tiles = {texture .. ".png"},
+		inventory_image = texture .. ".png",
+		wield_image = texture .. ".png",
+		paramtype = "light",
+		sunlight_propagates = true,
+		is_ground_content = false,
+		walkable = false,
+		selection_box = {
+			type = "fixed",
+			fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}
+		},
+		groups = {
+			snappy = 2, dig_immediate = 3, flammable = 2,
+			redwood_sapling = 1, sapling = 1, attached_node = 1
+		},
+		sounds = default.node_sound_defaults(),
+		grown_height = height,
+	})
+end
+
+redwood.register_sapling("redwood:redwood", "Redwood", "redwood_sapling", 31)
+
+redwood.add_tree = function (pos, ofx, ofy, ofz, schem)
+	-- check for schematic
+	if not schem then
+		print (S("Schematic not found"))
+		return
+	end
+	-- remove sapling and place schematic
+	minetest.swap_node(pos, {name = "air"})
+	minetest.place_schematic(
+		{x = pos.x - ofx, y = pos.y - ofy, z = pos.z - ofz},
+		schem, 0, nil, false)
+end
+
+local path = minetest.get_modpath("redwood").."/schematics/"
+
+-- grow tree functions
+function redwood.grow_redwood_tree(pos)
+	if math.random(1, 2) == 1 then
+		redwood.add_tree(pos, 9, 3, 9, path .. "redwood.mts") -- shinji
+	else
+		redwood.add_tree(pos, 8, 6, 8, path .. "redwood_tree.mts") -- iska
+	end
+end
+
+-- check if sapling has enough height room to grow
+local function enough_height(pos, height)
+
+	local nod = minetest.line_of_sight(
+		{x = pos.x, y = pos.y + 1, z = pos.z},
+		{x = pos.x, y = pos.y + height, z = pos.z})
+
+	if not nod then
+		return false -- obstructed
+	else
+		return true -- can grow
+	end
+end
+
+redwood.grow_sapling = function (pos, node)
+
+	local under =  minetest.get_node({
+		x = pos.x,
+		y = pos.y - 1,
+		z = pos.z
+	}).name
+
+	if not minetest.registered_nodes[node.name] then
+		return
+	end
+
+	local height = minetest.registered_nodes[node.name].grown_height
+
+	-- do we have enough height to grow sapling into tree?
+	if not height or not enough_height(pos, height) then
+		return
+	end
+
+	-- Check if Ethereal Sapling is growing on correct substrate
+	if node.name == "redwood:redwood_sapling" then
+		redwood.grow_redwood_tree(pos)
+    end
+end
+-- Grow saplings
+minetest.register_abm({
+	label = "Redwood grow sapling",
+	nodenames = {"group:redwood_sapling"},
+	interval = 10,
+	chance = 50,
+	catch_up = false,
+	action = function(pos, node)
+
+		local light_level = minetest.get_node_light(pos)
+
+		if not light_level or light_level < 13 then
+			return
+		end
+
+		redwood.grow_sapling(pos, node)
+	end,
+})
diff --git a/schematics/redwood.mts b/schematics/redwood.mts
new file mode 100644
index 0000000000000000000000000000000000000000..32a164fc56d5e1775357ae19529bdcc451def824
GIT binary patch
literal 1159
zcma)&c{JMx0LOolu~{{*Z%FM;dQ-B-R-ulddy00ZPc4qj*&wBe<A<a~+CFcx5!W_X
z)VUN%NV008@rbiQ8!hTCVy+2sMuciwJO15!d;9$R{e1uVT=&La2cUpHfCTgp|2Ka<
zp!nM$aGa17NdO7>7<-TqPL7KU4~Ze*NrXfI{;wekOpcAdQ?_1CFJhiL=0emQ#>uRo
znWjU6Oj#nCg3*hQs&ZX{^n1{>fYQ)mEdbbZ-u|E)0|2L-6SO}|ufig9jza*EJ%_x%
zf&Z1FYNic^T7IVs#QTh-u^P;RH|7*-TndY)`X+dsx|uy{csCg~m!hhJ$hDGf+;?Fn
zPz5gOf|Ob)YlOG_Q5`Vm%hd$&>yIuwKru~{Eju0yGEtlg`w<Q13*PTH$uXD1rXtD~
zr@Q#(Ic(X_dFsW82V_B-EXkl0+b$#qIA-M=`(bw#w^=-HYM!PMS@CRuGu=1pEfuX=
z=tn!B_MAKq(w)F<^UpInR|Z5plB}9H9L4nqM-+_96x7%~d%lZxjb-HxKVk2kNF0L7
z+JbpUa6n!@cAuOm!-I>)Jv%T@2GU(vBP>AwHd~iSMEUFr^P9zm>a>|K4O}QM6wOZv
z;NptGG4?@LUmlCJS;_3e+$d+4l8fCr<k<b#<Zs=u#N>=r9XeTDa7htUuNa3DzpOj|
zO17sqC`7Av#7-YZE+Lxi)5?D!5m)yV+sIa^PaJ0{61&&1#^kY;sG^JJ2UJin7TO|e
zb+D<|Ai8J$4BP`b0c=?{%b$-)%P3+}e1c9dSJ`{+QgUILJWXrIuzZrtH|F+Jr4g*~
zS+1QwC3g-xK-&a~wcMT>$KJuiP?cyIK_oQ<t17jCwks6N)%CFc7C+%k^+AJYxnV4o
zn_bH#xX@odGH#jwXh*O8MLqpB0TfG$hEBeH&O`AAEs&@yC;1TD^x2uSchz$*WWq-?
zV~)?!zfW4bTTd>p6*&Gv<X0&TQHSGnI93{S?_pxu=$Q`cHh55`zr(mNQ@KUz3>Y}_
zWKB|VmNG6FV<~F5k7H1=+}^$tApYFct-f6ZJH>aSd2m}k*{*rJ?&WvW777IZ<U4>F
z*vTa;#-Yo={rXo*U2VoO0Js&ey}$Ve3j7CKA@S;v4ah&nS2jk6&TCdZ2|+ze@+_Fe
z)eVbg=%s1Z)6GuXT$HR?Rk3%i<l5~1XjjzJ#jF#RZhZOIwPEJ3nPyVQIE5+BsBQ><
zx-k|_F_4H4%u1bl9?IXCe0t<Ci=?+l@({mYXy9~9hdLd+780ZZsk&>{a5!_pB!^xR
zVuWbv0v+ZqO6-*CR1XGiSB^81bja^xKB;Ao&L537ohoS!3xsR$n6_u<x(RTu#Vblk
zrbUXNn6`W-%*!e#Lx{u*4kU#ix7{4d%xM{!d0;ISnz?SjTiQ&5F`BC%yVh@^T?c9T
q(;ZxNF1GxgQm69V)roQ|@sksXpqE^rE&Y4FzatbceZi5!(*FdzOk^AY

literal 0
HcmV?d00001

diff --git a/schematics/redwood_tree.mts b/schematics/redwood_tree.mts
new file mode 100644
index 0000000000000000000000000000000000000000..50c367a893d3820377dcc44af627aa220268d125
GIT binary patch
literal 1373
zcma)zdo<Gv0DylIb(Ke*E{&GSk!R*kUe_>+F*OaVyqj&T%oxi|E05C2%_F(!+_M=;
z9+}q}@|J`lwaMz1?9LQ3d2FSwg?sPc_uO;t_wV<8r-Oq|13Q6zz)@gd`v2nZS{-*W
z2{0hiNW>%}j{I{Hkw8yKAViUgxD;YCp#LvHOS(*n1GJ-YaYO>1jAQ(Bq_RG-!{`sJ
z^s+nPL@whL%!9tQLGyp-MXmKx6U;;%o_Nq{gPJA_ii<2X0N?wiPyqNw_^i4;rUn2U
zYnSWt<6^F>K@i+@#u^C=f&$YZN|oO_hFOeBMAIFhgSP8+2R(gUhMPclF&T%RkALgw
zKC?(mX64N>^BEFnF~{2^8InBeNco|!z5*V0E?GB+KCbTZb+h}7HJ{z^ocW%bZcXL&
zfQD4FFhy$>=!4FcnEFnOsl-m_u1OK-5FYk1lT-9Xo1|NP-eF{=(yVn<niy**ewT3#
zRkWg|jC^+0mQRvbt6+}CHY#FX<9u*Zud*5@tSf7t)K2H-%kU8nW>Cu)HJrj|Y>4Ic
zN0OG@k@+My1xV5EfOK9?SJ0Vl=PQ>8Odqa6*?dX&<P@WVe@U>-8hb;x<rOF*7X3n}
zBm&DRW$(4)rs?{U(D?Zhrqd$##&qt>=FJu4<8@Kgvhq_%U!%c9d-Aljfu7V!1#PAA
zFJ2hDv}!*}sd?3zg0gn~8vI5Te##NAEM^(pjBCYK*S_6alU+eBymM)bbSVXOKyC5{
zT;EfnEUDXb(l+AeoaIHX!1j9j?3lbaFVHMOMmsV)EM4}3lKs+*BPOC&oI2!v*y)t`
z@Lg3e{8!QD%7HjY$ez1~@ysQXIp=9-3<|{Mz~7#$ubSC28Bl>lE;#H`TorAI%RD+v
zUAMx$d9ia{$d_4{!HF(kg_gr>_O_3LXM=}pYN7Ivq(;s|lSDT{0uBN0Hdvp@nObGg
zU4j0+;~%pDAW;)vhEfAAq%_Hm20eiP<e_wl)1u)XDn)iZ;ge1icZXy-T^%gvZ%-)>
zc~ANl^~rV~i_%LIL>K%LxUP-Qg7pNa#@*h`*&&YQ2{ISjkK|);C|Z2|owl&E65CG!
z_vOA>)UfrsK1@?7{M3VdO{^5h<6<h%jOq(_FxOQ6>djzbhS|0bp$7Z?^<_nRJo2t!
zn0InqqT#1+e<0w-n2u?!SQibO#lIba?T_H|w}cr+LdtK=i*oD46Xsq<hw<u#Q<~GY
zDiEe0yuT($Ia_el&c1RpB^(4^dz9jK@0>_wYUrz<E0=pgI=GfjU|E4?Z!JWsT9Yfn
zpyj<=ZxAM)UXJA`wP&|%E4|`!w2l=MQ*X89Ae<+H^k#y)GUy$VndOCc2v|v|NEO4V
zX?rq^(QajhpBaLSSYObqpw!!GmT@FJ71I4jXtts76~fGl9Fx!JaNlqoJ(%F0%P4E`
zSltg%QbwLF>!rHuTfj~bux=-PcKB(8B&;1X<2A-84c+#B`&E5N*QVvQXFt}Fw>zS$
zp_y*%)0oLcJq{512U--q;y|_X{n9FqxbSvY5BNqF{@&c4<(>Vce8^7CyU)YCTqX<%
zm(vi)`^x#q@_~g*38D=vZchP?QF=fmsQoD-Wcxe&X^Zah>9P77T158QHGkui(UnXD
z+@g2m^F2*AcwP|O{bvc7L5sSFt)TDupi?7*$U^EiKA>lnn1bx3WolqyGn}2_gHGGo
z0Cry6+iwi9dWvPwWlQpW$vCv^1cFzQC-z*HZSsh_C<yBxcQkRp?SVjOvY%X~YxMH0
F$zNjRo815a

literal 0
HcmV?d00001

diff --git a/textures/redwood_leaves.png b/textures/redwood_leaves.png
new file mode 100644
index 0000000000000000000000000000000000000000..9cb0799d95abd38657051d0f86aa6a686bd83c8c
GIT binary patch
literal 969
zcmV;)12+7LP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV000A!Nkl<ZILlR&
zPiP}$7{=fC`(~z@B;8CxV@he#>9!DC>$2;n>u$R$!j>k@K@e}!lLyNR?!|+6^B^vY
zhXtwi>R!AEf@B-h;zC&>*cLTPmS8rUG<MsXnwk8a$v1yKFWUvr&*k_0cpi)<7g#-;
zmtv_!S55|Su-*H>v8+$)*}OEG_JhFY3PhlDax#EMuKf;o+zoF^5shr?Ev>ry9mZ0N
zu4_AMu5Eu~b^3-J4sxx!OO)v4E)bMN^`TVR&>)<c<&C`}j;8(KoW!^s4szFaekAS6
zArgUp%`NA4W3Pzq$|3sBOVFtu`OH&Y6lbpSXmWvhMieWSzW(uXrVBK3fJQ?@BG6?V
zo{_-go93Za75baHrPuZ(Wg@{WT98ER#XnG_b9Ud95mEQQ5gzJiGzSQ}XJkZ~NHDWk
z##U|zJCC1;pTB((yeUQWkjw7^!MIlW1?iB~?sxz6oU9iCMM|9kJ7-m%=c8#q5OBGm
zOeDS?G#t3S`W$}pK;Vlz`{>&CS4hc+%0z<Ivw6uMy2SKS72D;%p>td?&1MTk=K{lU
zVwTI{Ajru8^fz^D$@fUw>P>O;R0lZ{Qag?Pnm=^O@un2g%I%;xDuP{`b>(CLOSkSJ
zc`5{qTpPO0U!`1oGUH7tVD`$$9rrK0<A8ap6C>N=D;^)1r74dyU|Y?*RTy8o+9YOq
zgwx0Y0)QHP$pZtey<%irFt&Dsp9wX4W&CK-B3r#Fo($E^!=HASJ)uB;ptXZIzH~K0
z1bW0Bx1!hgr#lZBJgvn6V4idSCIGxr&*oo^-&x`PP2I9+K|0QKVKnWB{|!S<2Jp$o
zHd1$t>!m6NugD;{lh3l!t$V1%RUWxH3;j*qu4nTi4$nvse$5B$Q9MEf`UB_uqD2c5
zHD4GIO1A5{pVLZQ<>#iy0RYs4%!Aq)A?MsCL3Q30XRdL<>lt#GJqZBNt1w`#j)at?
z;&)cKUaBI4-;i5QC6>ParA;2A(a_MM1&J694V!nX;M(?ktkoHD28{a7OVHRWqS4UM
z$h9GwTwuqUE||?00hiwlM6P@`oH#<!xxk)H+3b~ZZ0!a=Sueuy<k<TF@C72?XXN+g
zUWI`&k#LAWU+y3OyBk_nf!#OerPt+MRN^YvOI19(H2^>~xxm2X(`K_(3$3bfvR(w=
rc*J3?4h^lU(E0u!nGQ*9L=^r5OitZ}7|R8I00000NkvXXu0mjfHV4`-

literal 0
HcmV?d00001

diff --git a/textures/redwood_sapling.png b/textures/redwood_sapling.png
new file mode 100644
index 0000000000000000000000000000000000000000..90396d9fc62158c39cfe54df476b3a45abe013c0
GIT binary patch
literal 226
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUO)OwAkl=Sz68F-SaWqm3
zFjlp5(MqT^t>ewD0;*vw3GxeOaCmkj4a7<Ec6VXuV3qX%aySb-B8wRqxP?KOkzv*x
z37{Z*iKnkC`#pA6K_&*jGXWqWXHOT$5RU7~2@XteI0J62UBYn2qug7Q+4$6)kV}d|
zt&apW+f<BK=qV?2oE6LAx~iYUF*Pa3A$<eag6@`Cht3Ex2{CYf=D5}1xXuh{9D}E;
KpUXO@geCwnZ#t6z

literal 0
HcmV?d00001

diff --git a/textures/redwood_trunk.png b/textures/redwood_trunk.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc6a325815f1e59e459f3dbc567ad9ffee1f3716
GIT binary patch
literal 867
zcmV-p1DyPcP)<h;3K|Lk000e1NJLTq001BW001Be0{{R3M5Kzw0001BP)t-s6A1+y
z5DFm?3?35(CJ_!R6%Z#E5GxrCGZzpr7!Nob6EGeWG#wQ)9}hPk5IZ6jHzXQ7BN{;>
z7dj>uLnRbICmBj9978M<PAD5iEFDNK8dEGCR5Bq@GbK<oAXGFRF}zJ300001VoOIv
z0Eh)0NB{r;32;bRa{vGf6951U69E94oEQKA00(qQO+^RZ2L%v20XB_?0{{R5iAh93
zR5;5Wli`-#AP9ujyJ8Jo5xv-wM)&>SvTXk)=X@EMVG?2lvrdb57t%2wNTfZ*sJa(s
z4B=JyNZGnOj=%SFdJ>iR6%QSTTtkR2vRaJxQc;xEYf($183_U9kW!S{fMqvbgV|&i
z99bw68Dt1P&6dUT*j2}pwd!Kf3rnTTfSLnAh6H4hO3yX^rlF*aFiZt^4G@EN0&J92
z3_i=1$&8@W+&(VE7=;_<w`CiW=9<68b>F_3@aC(yi?~13OH*2l>b-q;ACf|szHueb
zA<7{%#7otojfg`KT)`8R7+k`?gs1naYGWLzLK88-MpKGEJ9x-&cd7Fj*Mo^KB#1;u
zSs=vh0F@(H%{EsXK!Sr}qeu0R0{{k47f9B%q&^Vq>BO&`2g{AVW44sAC2QSm<kjO;
z#Tx6#`2Fd=Ls?LJLqCou)D{P63KTMvX=4Z8w}8*bsltm_21O_{xEZ0g{sV5!SoFbe
zQ)<o`<_x@~&yR-JtDFura;D)oP<3KJ=TLZbzE6lD5qeJmxUrp2CQU?9+#bsOHct{9
z$Rk#H_#DGbUqXpu%(?x3)RTrUOs<gUW6$;xGE5L1AbM+epk}{}3edUMw(XB+dc-M<
z^6^$D$le$3qJ--V1Dl&4j3qA9!yy#N31Q~3tLZZg-~ArnJ-t#t<#=IAt;l%85Z%1m
z>Dui)n4!qI4Sp1Ug1*taEbm?Y#;VVsUv31S&ws!TqgJ#uTibkg^Rz~$7vQnwKuTZ2
zlvM#~yTZEG@|P5W_TZn!MY7%V+fDen#7mo3@&7IPb7${lOx5eF4W*w)X?xuU76@=i
tK~i{yh<(E*xx^Ns1Jb%H6h$r={{eOWI7Z{islEUJ002ovPDHLkV1fw3Xh;A6

literal 0
HcmV?d00001

diff --git a/textures/redwood_trunk_top.png b/textures/redwood_trunk_top.png
new file mode 100644
index 0000000000000000000000000000000000000000..40ca89e4a2de1fda9fcc327c0737d96707e0cf65
GIT binary patch
literal 822
zcmV-61Ihe}P)<h;3K|Lk000e1NJLTq001BW001Be0{{R3M5Kzw0001BP)t-s7Yqj;
z5(Oa<3nvi@C>IYm6bL&P1wj`ILl^`w9TPno5I`FQNf-z~91TYt2}d0RO&kt5A{j~_
z4p1HnO(6+DB^XvD5LqS+R3{NjFCkwn5?n18VJsMCEFWn#A7VWxeOX(D00001VoOIv
z0Eh)0NB{r;32;bRa{vGf6951U69E94oEQKA00(qQO+^RZ2L%v2AIyTfU;qFDTuDSh
zR5;5$RDrVMAPnU7*#bg=LK>oQ_5c6!HudJP!&I{*yV;;I=J9$R$Lqv)oagy^EXR2)
z#^Ckzzuo|lbk&^dx>~GlOGGJC4bFQ29<}6_GZk{1b<QPcts`mFQV{=ZmY7nmwc)_#
zbRipdqSji7@-R!Pn!S__=aajilwu-brYI*Ww5Dih@vAOsrL^QC08*1T4+NR-c*GMU
zRVpYLo%BAOH%kGaMZ{fz7QEjp*F?Sd02P`cf_QX^d5mk$Yp`-m#FNmFd=r2`tyEpA
za$U27VQwt4Xa-bpE*2J4aVdm6-|u$^Lb@2U{0Ee1V}a-tNG1S6)U^*ew|WC2lvKNK
zp*m_^Q^;EZ$Z*R8D5(+a9<&+r&45jBe!#8X2xQ;4ec!gdMi57h+~)z3EKLa@MXLL*
ze%2CmhNj&6sVV@d5g2EyU7t4X4)%}&xWDd3fqT;a2b|X`7E)O|(dP*c1ep!(Dw|Hr
zy6$@jXgLcL56u98#<|$lKG)~EKA{8sCdw>#39W|xPtgL;b+4O~IWSZ_`1}Wm$TNqt
zJ7hvAzAzfhZ@Fc{yHsh+QKQ|_D%YmQIRo&uyHlei)y*N%x`{A10i<_AiG)VLIH_|C
zAvnzSYkgz5jtu1{(Ikz}XTmp~=_*2_$rPCN1u*VOnxD^w2?oQ9WC&*B2HeK<oI?Ny
z9K+BJXv|s07f@IMf_sG9A}lygLj;5d3^m`8!u)b0@Eh8o>$=|GrE&AK+yD$1=2(LW
ze*s;*U(AnL{PB9=@}Kw*IQ+|dyge4<Pkj9H7g3%<aOOVu@Bjb+07*qoM6N<$g1^yE
AXaE2J

literal 0
HcmV?d00001

diff --git a/textures/redwood_wood.png b/textures/redwood_wood.png
new file mode 100644
index 0000000000000000000000000000000000000000..9991ed770f694ceee759e8fb00eb867ce1ae2e31
GIT binary patch
literal 654
zcmV;90&)F`P)<h;3K|Lk000e1NJLTq001BW001Be0{{R3M5Kzw0001BP)t-sEfEJY
z5eYIC1vV51I}-~z77ITW2Rs-DMHUP}7z;=k2SXYSK^zWC8Vg1o2}B+WP8|<Q9}Z9+
z2~8jgO(79fAr4U_4qPG(SR@KpBoSLD4q7J@SSbxyDidES5M3@2Y!kng0005$Nkl<Z
zILlR1i-Myd42)8s?keSBTtQd=|1WO>^m;c6$Yc^?0y!6e#d{wbd|16-vHHr9P<~mK
z6k_m+BYS3<-=N^(y@ZeuCNgg<@cth`SmcD1B>Wn-D1sR439Ao|kb-N6*KEYTv5(Ci
z9JM63nu=eu;GKgw1+v!8FZY_~`6UlXjMoeEJZrF&abS!&<h_(~6v0*YvI`^{-8%vz
zso&1+9mu6B=qS5n&G%K!HAGcqu0kq&7LIwlE?D4FCHr2GYOWFP6Sc`lIWJ((>mkY-
zy#5c<d7i&8pT~9I<$&xKMUMVB>JQUW8-;rJ?qEdejldaW==uDr=-k`3fSQa5%;ZEP
zL&&gveT>FD9)x)U`aHQWS*Is#`l0m0koh0q({pOxS}Ubmgcb~pR>tDfYVlWU9JPMX
zwrv3;^$VBk+b~&&c1vZ^ho2v*KFZ4t(iAiRbwE`QA3;c0xm~Ba?%V_s73~)GOY~7*
z0k?&s1m^DQK4$DvN)XhOIp+;zioA&x2Dv1-jVV&S%!06{6~xLcoA0@UEb8VOCJRDq
zYqcW5h)O9E;*HsgKtnJN!$8B>1lqP*Hj$Qs4%DGW2vAk6#a<=Yh#!C;@}+bK1V;Qp
o{tW;TDW%n0fzx3h6n!xK0Sfgz3oLATr2qf`07*qoM6N<$f<`wCC;$Ke

literal 0
HcmV?d00001

diff --git a/wood.lua b/wood.lua
new file mode 100644
index 0000000..caca1d2
--- /dev/null
+++ b/wood.lua
@@ -0,0 +1,31 @@
+
+local S = redwood.intllib
+
+-- redwood trunk
+minetest.register_node("redwood:redwood_trunk", {
+	description = S("Redwood Trunk"),
+	tiles = {
+		"redwood_trunk_top.png",
+		"redwood_trunk_top.png",
+		"redwood_trunk.png"
+	},
+	groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
+	sounds = default.node_sound_wood_defaults(),
+	paramtype2 = "facedir",
+	on_place = minetest.rotate_node,
+})
+
+-- redwood wood
+minetest.register_node("redwood:redwood_wood", {
+	description = S("Redwood Wood"),
+	tiles = {"redwood_wood.png"},
+	is_ground_content = false,
+	groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
+	sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_craft({
+	output = "redwood:redwood_wood 4",
+	recipe = {{"redwood:redwood_trunk"}},
+})
+
-- 
GitLab