diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2499ee9355fa324d614684952872e831f89c2777
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,17 @@
++---- GNU GPL v3 ----+
+
+More Ores -- a Minetest mod that adds ores.
+Copyright (C) 2013  Calinou
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/README.md b/README.md
deleted file mode 100644
index ff4c4833d48b3de8b545bd341ea3d11be4fe45ef..0000000000000000000000000000000000000000
--- a/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-moreores
-========
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4c15581382e6329f1a14e7f94c21156fe6ee10ef
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,22 @@
+Calinou's Minetest Mods
+=====================
+
+Calinou's Mods for Minetest [http://minetest.net], a free and opensource Minecraft-like game.
+
+This Git repository is mostly made for servers; it allows easy updating.
+
+To install, just clone this repository somewhere, then copy the "calinou_mods" folder in the "mods/minetest" folder of Minetest's installation folder.
+
+
+
+Misc stuff
+=====================
+
+All these mods' source codes, except More Ores are under the zlib/libpng license. More Ores is under the GNU GPLv3; the mods' textures are under the CC BY-SA 3.0 Unported.
+
+Mods' forum threads:
+More Blocks: http://minetest.net/forum/viewtopic.php?id=509
+More Ores: http://minetest.net/forum/viewtopic.php?id=549
+Map Tools: http://minetest.net/forum/viewtopic.php?id=1882
+Doors+: http://minetest.net/forum/viewtopic.php?id=2059
+Stairs+: http://minetest.net/forum/viewtopic.php?id=2092
diff --git a/_config.txt b/_config.txt
new file mode 100644
index 0000000000000000000000000000000000000000..68c66580998af87e37c048d888b6d7aa28eedbe6
--- /dev/null
+++ b/_config.txt
@@ -0,0 +1,35 @@
+------------------------------------------------------------------------------
+------------------------------ CONFIGURATION ---------------------------------
+------------------------------------------------------------------------------
+
+------------------------------------------------------------------------------
+-------- Change settings by changing the values after the "=". ---------------
+------------------------------------------------------------------------------
+
+-- Chunk sizes for ore generation (bigger = ore deposits are more scattered around)
+moreores_copper_chunk_size = 8
+moreores_tin_chunk_size = 7
+moreores_silver_chunk_size = 11
+moreores_gold_chunk_size = 14
+moreores_mithril_chunk_size = 11
+
+-- Amount of ore per chunk (higher = bigger ore deposits)
+moreores_copper_ore_per_chunk = 8
+moreores_tin_ore_per_chunk = 3
+moreores_silver_ore_per_chunk = 4
+moreores_gold_ore_per_chunk = 4
+moreores_mithril_ore_per_chunk = 1
+
+-- Minimal depths of ore generation (Y coordinate, 0 being sea level by default)
+moreores_copper_min_depth = -31000
+moreores_tin_min_depth = -31000
+moreores_silver_min_depth = -31000
+moreores_gold_min_depth = -31000
+moreores_mithril_min_depth = -31000
+
+-- Maximal depths of ore generation (Y coordinate, 0 being sea level by default)
+moreores_copper_max_depth = 64
+moreores_tin_max_depth = 8
+moreores_silver_max_depth = -2
+moreores_gold_max_depth = -64
+moreores_mithril_max_depth = -512
diff --git a/depends.txt b/depends.txt
new file mode 100644
index 0000000000000000000000000000000000000000..331d858ce9b12fa6720414196a9dd6e0b6a0faaa
--- /dev/null
+++ b/depends.txt
@@ -0,0 +1 @@
+default
\ No newline at end of file
diff --git a/init.lua b/init.lua
new file mode 100644
index 0000000000000000000000000000000000000000..86f66eb01a5ded9607a1a13f325efb26535aad8f
--- /dev/null
+++ b/init.lua
@@ -0,0 +1,364 @@
+-- Load translation library if intllib is installed
+
+local S
+if (minetest.get_modpath("intllib")) then
+	dofile(minetest.get_modpath("intllib").."/intllib.lua")
+	S = intllib.Getter(minetest.get_current_modname())
+	else
+	S = function ( s ) return s end
+end
+
+dofile(minetest.get_modpath("moreores").."/_config.txt")
+
+print(S("[moreores] loaded."))
+
+--[[
+****
+More Ores
+by Calinou
+with the help of MarkTraceur, GloopMaster and Kotolegokot
+Licensed under GPLv3+ for code and CC BY-SA for textures, see: http://www.gnu.org/licenses/gpl-3.0.html
+****
+--]]
+
+-- Utility functions
+
+local default_stone_sounds = default.node_sound_stone_defaults()
+
+local stick = "default:stick"
+local recipes = {
+	sword = {{"m"}, {"m"}, {stick}},
+	shovel = {{"m"}, {stick}, {stick}},
+	axe = {{"m", "m"}, {"m", stick}, {"" , stick}},
+	pick = {{"m", "m", "m"}, {"", stick, ""}, {"", stick, ""}}
+}
+
+local function get_tool_recipe(craftitem, toolname)
+	local orig = recipes[toolname]
+	local complete = {}
+	for i, row in ipairs(orig) do
+		local thisrow = {}
+		for j, col in ipairs(row) do
+			if col == "m" then
+				table.insert(thisrow, craftitem)
+			else
+				table.insert(thisrow, col)
+			end
+		end
+		table.insert(complete, thisrow)
+	end
+	return complete
+end
+
+local function add_ore(modname, mineral_name, oredef)
+    local firstlet = string.upper(string.sub(mineral_name, 1, 1))
+    local description = firstlet .. string.sub(mineral_name, 2)
+    local img_base = modname .. "_" .. mineral_name
+    local toolimg_base = modname .. "_tool_"..mineral_name
+	local tool_base = modname .. ":"
+	local tool_post = "_" .. mineral_name
+    local item_base = tool_base .. mineral_name
+	local ingot = item_base .. "_ingot"
+	local lumpitem = item_base .. "_lump"
+	local ingotcraft = ingot
+
+	if oredef.makes.ore then
+		local mineral_img_base = modname .. "_mineral_"..mineral_name
+		minetest.register_node(modname .. ":mineral_"..mineral_name, {
+			description = S("%s Ore"):format(S(description)),
+			tiles = {"default_stone.png^"..mineral_img_base..".png"},
+			groups = {cracky=3},
+			sounds = default_stone_sounds,
+			drop = item_base .. "_lump 1"
+		})
+	end
+
+	if oredef.makes.block then
+		local blockitem = item_base .. "_block"
+		minetest.register_node(blockitem, {
+			description = S("%s Block"):format(S(description)),
+			tiles = { img_base .. "_block.png" },
+			groups = {snappy=1,bendy=2,cracky=1,melty=2,level=2},
+			sounds = default_stone_sounds
+		})
+		minetest.register_alias(mineral_name.."_block", blockitem)
+		local ingotrow = {ingot, ingot, ingot}
+		local nodeblockitem = "node " .. blockitem .. ""
+		minetest.register_craft( {
+			output = nodeblockitem,
+			recipe = {ingotrow, ingotrow, ingotrow}
+		})
+		minetest.register_craft( {
+			output = "craft " .. ingot .. " 9",
+			recipe = {
+				{ nodeblockitem }
+			}
+		})
+	end
+
+	if oredef.makes.lump then
+		minetest.register_craftitem(lumpitem, {
+			description = S("%s Lump"):format(S(description)),
+			inventory_image = img_base .. "_lump.png",
+			on_place_on_ground = minetest.craftitem_place_item
+		})
+		minetest.register_alias(mineral_name .. "_lump", lumpitem)
+		if oredef.makes.ingot then
+			minetest.register_craft({
+				type = "cooking",
+				output = ingot,
+				recipe = lumpitem
+			})
+		end
+	end
+
+	if oredef.makes.ingot then
+		minetest.register_craftitem(ingot, {
+			description = S("%s Ingot"):format(S(description)),
+			inventory_image = img_base .. "_ingot.png",
+			on_place_on_ground = minetest.craftitem_place_item
+		})
+		minetest.register_alias(mineral_name .. "_ingot", ingot)
+		if oredef.makes.chest then
+			minetest.register_craft( {
+				output = "node default:chest_locked 1",
+				recipe = {
+					{ ingotcraft },
+					{ "node default:chest" }
+				}
+			})
+			wood = "node default:wood"
+			woodrow = {wood,wood,wood}
+			minetest.register_craft( {
+				output = "node default:chest_locked 1",
+				recipe = {
+					woodrow,
+					{wood, ingotcraft, wood},
+					woodrow
+				}
+			})
+		end
+	end
+
+	for toolname, tooldef in pairs(oredef.tools) do
+		local tflet = string.upper(string.sub(toolname, 0, 1))
+		local tool_description = tflet..string.sub(toolname, 2)
+		local tdef = {
+			description = "",
+			inventory_image = toolimg_base .. toolname .. ".png",
+			tool_capabilities = {
+				max_drop_level=3,
+				groupcaps=tooldef
+			}
+		}
+
+		if toolname == "sword" then
+			tdef.full_punch_interval = oredef.punchint
+			tdef.description = S("%s Sword"):format(S(description))
+		end
+
+		if toolname == "pick" then
+			tdef.description = S("%s Pickaxe"):format(S(description))
+		end
+		
+		if toolname == "axe" then
+			tdef.description = S("%s Axe"):format(S(description))
+		end
+
+		if toolname == "shovel" then
+			tdef.description = S("%s Shovel"):format(S(description))
+		end
+
+		local fulltoolname = tool_base .. toolname .. tool_post
+		minetest.register_tool(fulltoolname, tdef)
+		minetest.register_alias(toolname .. tool_post, fulltoolname)
+		if oredef.makes.ingot then
+			minetest.register_craft({
+				output = "craft " .. fulltoolname .. " 1",
+				recipe = get_tool_recipe(item_base .. "_ingot", toolname)
+			})
+		end
+	end
+end
+
+-- Add everything (compact(ish)!)
+
+local modname = "moreores"
+
+local oredefs = {
+	silver = {
+		makes = {ore=true, block=true, lump=true, ingot=true, chest=true},
+		tools = {
+			pick = {
+				cracky={times={[1]=2.60, [2]=1.00, [3]=0.60}, uses=100, maxlevel=1}
+			},
+			shovel = {
+				crumbly={times={[1]=1.10, [2]=0.40, [3]=0.25}, uses=100, maxlevel=1}
+			},
+			axe = {
+				choppy={times={[1]=2.50, [2]=0.80, [3]=0.50}, uses=100, maxlevel=1},
+				fleshy={times={[2]=1.10, [3]=0.60}, uses=100, maxlevel=1}
+			},
+			sword = {
+				fleshy={times={[2]=0.70, [3]=0.30}, uses=100, maxlevel=1},
+				snappy={times={[2]=0.70, [3]=0.30}, uses=100, maxlevel=1},
+				choppy={times={[3]=0.80}, uses=100, maxlevel=0}
+			}
+		},
+		punchint = 1.0
+	},
+	tin = {
+		makes = {ore=true, block=true, lump=true, ingot=true, chest=false},
+		tools = {}
+	},
+	mithril = {
+		makes = {ore=true, block=true, lump=true, ingot=true, chest=false},
+		tools = {
+			pick = {
+				cracky={times={[1]=2.25, [2]=0.55, [3]=0.35}, uses=200, maxlevel=1}
+			},
+			shovel = {
+				crumbly={times={[1]=0.70, [2]=0.35, [3]=0.20}, uses=200, maxlevel=1}
+			},
+			axe = {
+				choppy={times={[1]=1.75, [2]=0.45, [3]=0.45}, uses=200, maxlevel=1},
+				fleshy={times={[2]=0.95, [3]=0.30}, uses=200, maxlevel=1}
+			},
+			sword = {
+				fleshy={times={[2]=0.65, [3]=0.25}, uses=200, maxlevel=1},
+				snappy={times={[2]=0.70, [3]=0.25}, uses=200, maxlevel=1},
+				choppy={times={[3]=0.65}, uses=200, maxlevel=0}
+			}
+		},
+		punchint = 0.45
+	}
+}
+
+for orename,def in pairs(oredefs) do
+	add_ore(modname, orename, def)
+end
+
+-- Copper rail (special node)
+
+minetest.register_craft({
+	output = "moreores:copper_rail 16",
+	recipe = {
+		{"moreores:copper_ingot", "", "moreores:copper_ingot"},
+		{"moreores:copper_ingot", "default:stick", "moreores:copper_ingot"},
+		{"moreores:copper_ingot", "", "moreores:copper_ingot"}
+	}
+})
+
+-- Bronze has some special cases, because it is made from copper and tin
+
+minetest.register_craft( {
+	type = "shapeless",
+	output = "moreores:bronze_ingot 3",
+	recipe = {
+		"moreores:tin_ingot",
+		"moreores:copper_ingot",
+		"moreores:copper_ingot",
+	}
+})
+
+-- Unique node
+
+minetest.register_node("moreores:copper_rail", {
+	description = S("Copper Rail"),
+	drawtype = "raillike",
+	tiles = {"moreores_copper_rail.png", "moreores_copper_rail_curved.png", "moreores_copper_rail_t_junction.png", "moreores_copper_rail_crossing.png"},
+	inventory_image = "moreores_copper_rail.png",
+	wield_image = "moreores_copper_rail.png",
+	paramtype = "light",
+	sunlight_propagates = true,
+	walkable = false,
+	selection_box = {
+		type = "fixed",
+		fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
+	},
+	groups = {bendy=2,snappy=1,dig_immediate=2,rail=1,connect_to_raillike=1},
+	mesecons = {
+		effector = {
+			action_on = function(pos, node)
+				minetest.env:get_meta(pos):set_string("cart_acceleration", "0.5")
+			end,
+
+			action_off = function(pos, node)
+				minetest.env:get_meta(pos):set_string("cart_acceleration", "0")
+			end,
+		},
+	},
+})
+
+local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, ore_per_chunk, height_min, height_max)
+	if maxp.y < height_min or minp.y > height_max then
+		return
+	end
+	local y_min = math.max(minp.y, height_min)
+	local y_max = math.min(maxp.y, height_max)
+	local volume = (maxp.x - minp.x + 1) * (y_max - y_min + 1) * (maxp.z - minp.z + 1)
+	local pr = PseudoRandom(seed)
+	local num_chunks = math.floor(chunks_per_volume * volume)
+	local chunk_size = 3
+	if ore_per_chunk <= 4 then
+		chunk_size = 2
+	end
+	local inverse_chance = math.floor(chunk_size * chunk_size * chunk_size / ore_per_chunk)
+	-- print(generate_ore num_chunks: ..dump(num_chunks))
+	for i=1,num_chunks do
+	if (y_max-chunk_size+1 <= y_min) then return end
+		local y0 = pr:next(y_min, y_max-chunk_size+1)
+		if y0 >= height_min and y0 <= height_max then
+			local x0 = pr:next(minp.x, maxp.x-chunk_size+1)
+			local z0 = pr:next(minp.z, maxp.z-chunk_size+1)
+			local p0 = {x=x0, y=y0, z=z0}
+			for x1=0,chunk_size-1 do
+			for y1=0,chunk_size-1 do
+			for z1=0,chunk_size-1 do
+				if pr:next(1,inverse_chance) == 1 then
+					local x2 = x0+x1
+					local y2 = y0+y1	
+					local z2 = z0+z1
+					local p2 = {x=x2, y=y2, z=z2}
+					if minetest.env:get_node(p2).name == wherein then
+						minetest.env:set_node(p2, {name=name})
+					end
+				end
+			end
+			end
+			end
+		end
+	end
+	-- print(generate_ore done)
+end
+
+	minetest.register_ore({
+		ore_type       = "scatter",
+		ore            = "moreores:mineral_tin",
+		wherein        = "default:stone",
+		clust_scarcity = moreores_tin_chunk_size * moreores_tin_chunk_size * moreores_tin_chunk_size,
+		clust_num_ores = moreores_tin_ore_per_chunk,
+		clust_size     = moreores_tin_chunk_size,
+		height_min     = moreores_tin_min_depth,
+		height_max     = moreores_tin_max_depth
+	})
+	minetest.register_ore({
+		ore_type       = "scatter",
+		ore            = "moreores:mineral_silver",
+		wherein        = "default:stone",
+		clust_scarcity = moreores_silver_chunk_size * moreores_silver_chunk_size * moreores_silver_chunk_size,
+		clust_num_ores = moreores_silver_ore_per_chunk,
+		clust_size     = moreores_silver_chunk_size,
+		height_min     = moreores_silver_min_depth,
+		height_max     = moreores_silver_max_depth
+	})
+	minetest.register_ore({
+		ore_type       = "scatter",
+		ore            = "moreores:mineral_mithril",
+		wherein        = "default:stone",
+		clust_scarcity = moreores_mithril_chunk_size * moreores_mithril_chunk_size * moreores_mithril_chunk_size,
+		clust_num_ores = moreores_mithril_ore_per_chunk,
+		clust_size     = moreores_mithril_chunk_size,
+		height_min     = moreores_mithril_min_depth,
+		height_max     = moreores_mithril_max_depth
+	})
diff --git a/locale/es.txt b/locale/es.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1344a5a62aa7d5fb3fd552af9f83cad9c6596575
--- /dev/null
+++ b/locale/es.txt
@@ -0,0 +1,21 @@
+# Translation by kaeza
+
+[moreores] loaded. = [moreores] cargado.
+
+%s Ore = Mineral de %s
+%s Lump = Pepita de %s
+%s Ingot = Lingote de %s
+%s Block = Bloque de %s
+%s Pickaxe = Pico de %s
+%s Shovel = Pala de %s
+%s Axe = Hacha de %s
+%s Sword = Espada de %s
+
+Copper = cobre
+Tin = estaño
+Bronze = bronce
+Silver = plata
+Gold = oro
+Mithril = mitrilo
+
+Copper Rail = Riel de Cobre
diff --git a/locale/fr.txt b/locale/fr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..65687fa40ff45b5f9341bc1e8439b6ca463ccbba
--- /dev/null
+++ b/locale/fr.txt
@@ -0,0 +1,21 @@
+# Translation by Calinou
+
+[moreores] loaded. = [moreores] a été chargé.
+
+%s Ore = Minerai en %s
+%s Lump = Roche en %s
+%s Ingot = Lingot en %s
+%s Block = Bloc en %s
+%s Pickaxe = Pioche en %s
+%s Shovel = Pelle en %s
+%s Axe = Hache en %s
+%s Sword = Épée en %s
+
+Copper = cuivre
+Tin = étain
+Bronze = bronze
+Silver = argent
+Gold = or
+Mithril = mithril
+
+Copper Rail = Rail en cuivre
diff --git a/old_init.lua b/old_init.lua
new file mode 100644
index 0000000000000000000000000000000000000000..03be6bc4bdab5b28641eca9f547a4c1a032dd5ed
--- /dev/null
+++ b/old_init.lua
@@ -0,0 +1,745 @@
+--[[
+****
+More Ores
+by Calinou
+Old and "inefficient" version; use if the new version does not work for some reason. Outdated.
+Licensed under the zlib/libpng license, see LICENSE.txt for info.
+****
+--]]
+
+-- Blocks
+
+minetest.register_node( "moreores:mineral_gold", {
+	description = "Gold Ore",
+	tile_images = { "default_stone.png^moreores_mineral_gold.png" },
+	is_ground_content = true,
+	groups = {cracky=3},
+	sounds = default.node_sound_stone_defaults(),
+	drop = 'craft "moreores:gold_lump" 1',
+})
+
+minetest.register_node( "moreores:gold_block", {
+	description = "Gold Block",
+	tile_images = { "moreores_gold_block.png" },
+	is_ground_content = true,
+	groups = {snappy=1,bendy=2,cracky=1,melty=2,level=2},
+	sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node( "moreores:mineral_silver", {
+	description = "Silver Ore",
+	tile_images = { "default_stone.png^moreores_mineral_silver.png" },
+	is_ground_content = true,
+	groups = {cracky=3},
+	sounds = default.node_sound_stone_defaults(),
+	drop = 'craft "moreores:silver_lump" 1',
+})
+
+minetest.register_node( "moreores:silver_block", {
+	description = "Silver Block",
+	tile_images = { "moreores_silver_block.png" },
+	is_ground_content = true,
+	groups = {snappy=1,bendy=2,cracky=1,melty=2,level=2},
+	sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node( "moreores:mineral_copper", {
+	description = "Copper Ore",
+	tile_images = { "default_stone.png^moreores_mineral_copper.png" },
+	is_ground_content = true,
+	groups = {cracky=3},
+	sounds = default.node_sound_stone_defaults(),
+	drop = 'craft "moreores:copper_lump" 1',
+})
+
+minetest.register_node( "moreores:mineral_tin", {
+	description = "Tin Ore",
+	tile_images = { "default_stone.png^moreores_mineral_tin.png" },
+	is_ground_content = true,
+	groups = {cracky=3},
+	sounds = default.node_sound_stone_defaults(),
+	drop = 'craft "moreores:tin_lump" 1',
+})
+
+minetest.register_node( "moreores:bronze_block", {
+	description = "Bronze Block",
+	tile_images = { "moreores_bronze_block.png" },
+	is_ground_content = true,
+	groups = {snappy=1,bendy=2,cracky=1,melty=2,level=2},
+	sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node( "moreores:mineral_mithril", {
+	description = "Mithril Ore",
+	tile_images = { "default_stone.png^moreores_mineral_mithril.png" },
+	is_ground_content = true,
+	groups = {cracky=3},
+	sounds = default.node_sound_stone_defaults(),
+	drop = 'craft "moreores:mithril_lump" 1',
+})
+
+minetest.register_node( "moreores:mithril_block", {
+	description = "Mithril Block",
+	tile_images = { "moreores_mithril_block.png" },
+	is_ground_content = true,
+	groups = {snappy=1,bendy=2,cracky=1,melty=2,level=2},
+	sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("moreores:copper_rail", {
+	description = "Copper Rail",
+	drawtype = "raillike",
+	tile_images = {"moreores_copper_rail.png", "moreores_copper_rail_curved.png", "moreores_copper_rail_t_junction.png", "moreores_copper_rail_crossing.png"},
+	inventory_image = "moreores_copper_rail.png",
+	wield_image = "moreores_copper_rail.png",
+	paramtype = "light",
+	is_ground_content = true,
+	walkable = false,
+	selection_box = {
+		type = "fixed",
+		--fixed = <default>
+	},
+	groups = {bendy=2,snappy=1,dig_immediate=2},
+})
+
+-- Items
+
+minetest.register_craftitem( "moreores:gold_lump", {
+	description = "Gold Lump",
+	inventory_image = "moreores_gold_lump.png",
+	on_place_on_ground = minetest.craftitem_place_item,
+})
+
+minetest.register_craftitem( "moreores:gold_ingot", {
+	description = "Gold Ingot",
+	inventory_image = "moreores_gold_ingot.png",
+	on_place_on_ground = minetest.craftitem_place_item,
+})
+
+minetest.register_craftitem( "moreores:silver_lump", {
+	description = "Silver Lump",
+	inventory_image = "moreores_silver_lump.png",
+	on_place_on_ground = minetest.craftitem_place_item,
+})
+
+minetest.register_craftitem( "moreores:silver_ingot", {
+	description = "Silver Ingot",
+	inventory_image = "moreores_silver_ingot.png",
+	on_place_on_ground = minetest.craftitem_place_item,
+})
+
+minetest.register_craftitem( "moreores:copper_lump", {
+	description = "Copper Lump",
+	inventory_image = "moreores_copper_lump.png",
+	on_place_on_ground = minetest.craftitem_place_item,
+})
+
+minetest.register_craftitem( "moreores:copper_ingot", {
+	description = "Copper Ingot",
+	inventory_image = "moreores_copper_ingot.png",
+	on_place_on_ground = minetest.craftitem_place_item,
+})
+
+minetest.register_craftitem( "moreores:tin_lump", {
+	description = "Tin Lump",
+	inventory_image = "moreores_tin_lump.png",
+	on_place_on_ground = minetest.craftitem_place_item,
+})
+
+minetest.register_craftitem( "moreores:tin_ingot", {
+	description = "Tin Ingot",
+	inventory_image = "moreores_tin_ingot.png",
+	on_place_on_ground = minetest.craftitem_place_item,
+})
+
+minetest.register_craftitem( "moreores:bronze_ingot", {
+	description = "Bronze Ingot",
+	inventory_image = "moreores_bronze_ingot.png",
+	on_place_on_ground = minetest.craftitem_place_item,
+})
+
+minetest.register_craftitem( "moreores:mithril_lump", {
+	description = "Mithril Lump",
+	inventory_image = "moreores_mithril_lump.png",
+	on_place_on_ground = minetest.craftitem_place_item,
+	on_use = minetest.item_eat(2),
+})
+
+minetest.register_craftitem( "moreores:mithril_ingot", {
+	description = "Mithril Ingot",
+	inventory_image = "moreores_mithril_ingot.png",
+	on_place_on_ground = minetest.craftitem_place_item,
+})
+
+-- Tools
+
+minetest.register_tool("moreores:pick_bronze", {
+	description = "Bronze Pickaxe",
+	inventory_image = "moreores_tool_bronzepick.png",
+	tool_capabilities = {
+		max_drop_level=3,
+		groupcaps={
+			cracky={times={[1]=3.00, [2]=1.20, [3]=0.80}, uses=160, maxlevel=1}
+		}
+	},
+})
+
+minetest.register_tool("moreores:shovel_bronze", {
+	description = "Bronze Shovel",
+	inventory_image = "moreores_tool_bronzeshovel.png",
+	tool_capabilities = {
+		max_drop_level=3,
+		groupcaps={
+			crumbly={times={[1]=1.50, [2]=0.50, [3]=0.30}, uses=160, maxlevel=1}
+		}
+	},
+})
+
+minetest.register_tool("moreores:axe_bronze", {
+	description = "Bronze Axe",
+	inventory_image = "moreores_tool_bronzeaxe.png",
+	tool_capabilities = {
+		max_drop_level=3,
+		groupcaps={
+			choppy={times={[1]=3.00, [2]=1.00, [3]=0.60}, uses=160, maxlevel=1},
+			fleshy={times={[2]=1.30, [3]=0.70}, uses=160, maxlevel=1}
+		}
+	},
+})
+
+minetest.register_tool("moreores:sword_bronze", {
+	description = "Bronze Sword",
+	inventory_image = "moreores_tool_bronzesword.png",
+	tool_capabilities = {
+		full_punch_interval = 1.0,
+		max_drop_level=3,
+		groupcaps={
+			fleshy={times={[2]=0.80, [3]=0.40}, uses=160, maxlevel=1},
+			snappy={times={[2]=0.80, [3]=0.40}, uses=160, maxlevel=1},
+			choppy={times={[3]=0.90}, uses=160, maxlevel=0}
+		}
+	}
+})
+
+minetest.register_tool("moreores:pick_silver", {
+	description = "Silver Pickaxe",
+	inventory_image = "moreores_tool_silverpick.png",
+	tool_capabilities = {
+		max_drop_level=3,
+		groupcaps={
+			cracky={times={[1]=2.60, [2]=1.00, [3]=0.60}, uses=100, maxlevel=1}
+		}
+	},
+})
+
+minetest.register_tool("moreores:shovel_silver", {
+	description = "Silver Shovel",
+	inventory_image = "moreores_tool_silvershovel.png",
+	tool_capabilities = {
+		max_drop_level=3,
+		groupcaps={
+			crumbly={times={[1]=1.10, [2]=0.40, [3]=0.25}, uses=100, maxlevel=1}
+		}
+	},
+})
+
+minetest.register_tool("moreores:axe_silver", {
+	description = "Silver Axe",
+	inventory_image = "moreores_tool_silveraxe.png",
+	tool_capabilities = {
+		max_drop_level=3,
+		groupcaps={
+			choppy={times={[1]=2.50, [2]=0.80, [3]=0.50}, uses=100, maxlevel=1},
+			fleshy={times={[2]=1.10, [3]=0.60}, uses=100, maxlevel=1}
+		}
+	},
+})
+
+minetest.register_tool("moreores:sword_silver", {
+	description = "Silver Sword",
+	inventory_image = "moreores_tool_silversword.png",
+	tool_capabilities = {
+		full_punch_interval = 1.0,
+		max_drop_level=3,
+		groupcaps={
+			fleshy={times={[2]=0.70, [3]=0.30}, uses=100, maxlevel=1},
+			snappy={times={[2]=0.70, [3]=0.30}, uses=100, maxlevel=1},
+			choppy={times={[3]=0.80}, uses=100, maxlevel=0}
+		}
+	}
+})
+
+minetest.register_tool("moreores:pick_gold", {
+	description = "Golden Pickaxe",
+	inventory_image = "moreores_tool_goldpick.png",
+	tool_capabilities = {
+		max_drop_level=3,
+		groupcaps={
+			cracky={times={[1]=2.00, [2]=0.50, [3]=0.30}, uses=70, maxlevel=1}
+		}
+	},
+})
+
+minetest.register_tool("moreores:shovel_gold", {
+	description = "Golden Shovel",
+	inventory_image = "moreores_tool_goldshovel.png",
+	tool_capabilities = {
+		max_drop_level=3,
+		groupcaps={
+			crumbly={times={[1]=0.60, [2]=0.25, [3]=0.15}, uses=70, maxlevel=1}
+		}
+	},
+})
+
+minetest.register_tool("moreores:axe_gold", {
+	description = "Golden Axe",
+	inventory_image = "moreores_tool_goldaxe.png",
+	tool_capabilities = {
+		max_drop_level=3,
+		groupcaps={
+			choppy={times={[1]=1.70, [2]=0.40, [3]=0.35}, uses=70, maxlevel=1},
+			fleshy={times={[2]=0.90, [3]=0.30}, uses=70, maxlevel=1}
+		}
+	},
+})
+
+minetest.register_tool("moreores:sword_gold", {
+	description = "Golden Sword",
+	inventory_image = "moreores_tool_goldsword.png",
+	tool_capabilities = {
+		full_punch_interval = 0.85,
+		max_drop_level=3,
+		groupcaps={
+			fleshy={times={[2]=0.60, [3]=0.20}, uses=70, maxlevel=1},
+			snappy={times={[2]=0.60, [3]=0.20}, uses=70, maxlevel=1},
+			choppy={times={[3]=0.65}, uses=70, maxlevel=0}
+		}
+	}
+})
+
+minetest.register_tool("moreores:pick_mithril", {
+	description = "Mithril Pickaxe",
+	inventory_image = "moreores_tool_mithrilpick.png",
+	tool_capabilities = {
+		max_drop_level=3,
+		groupcaps={
+			cracky={times={[1]=2.25, [2]=0.55, [3]=0.35}, uses=200, maxlevel=1}
+		}
+	},
+})
+
+minetest.register_tool("moreores:shovel_mithril", {
+	description = "Mithril Shovel",
+	inventory_image = "moreores_tool_mithrilshovel.png",
+	tool_capabilities = {
+		max_drop_level=3,
+		groupcaps={
+			crumbly={times={[1]=0.70, [2]=0.35, [3]=0.20}, uses=200, maxlevel=1}
+		}
+	},
+})
+
+minetest.register_tool("moreores:axe_mithril", {
+	description = "Mithril Axe",
+	inventory_image = "moreores_tool_mithrilaxe.png",
+	tool_capabilities = {
+		max_drop_level=3,
+		groupcaps={
+			choppy={times={[1]=1.75, [2]=0.45, [3]=0.45}, uses=200, maxlevel=1},
+			fleshy={times={[2]=0.95, [3]=0.30}, uses=200, maxlevel=1}
+		}
+	},
+})
+
+minetest.register_tool("moreores:sword_mithril", {
+	description = "Mithril Sword",
+	inventory_image = "moreores_tool_mithrilsword.png",
+	tool_capabilities = {
+		full_punch_interval = 0.45,
+		max_drop_level=3,
+		groupcaps={
+			fleshy={times={[2]=0.65, [3]=0.25}, uses=200, maxlevel=1},
+			snappy={times={[2]=0.70, [3]=0.25}, uses=200, maxlevel=1},
+			choppy={times={[3]=0.65}, uses=200, maxlevel=0}
+		}
+	}
+})
+
+-- Crafting
+
+minetest.register_craft({
+	output = 'moreores:copper_rail 15',
+	recipe = {
+		{'moreores:copper_ingot', '', 'moreores:copper_ingot'},
+		{'moreores:copper_ingot', 'default:stick', 'moreores:copper_ingot'},
+		{'moreores:copper_ingot', '', 'moreores:copper_ingot'},
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:pick_bronze" 1',
+	recipe = {
+		{ 'craft "moreores:bronze_ingot"', 'craft "moreores:bronze_ingot"', 'craft "moreores:bronze_ingot"' },
+		{ '', 'craft "Stick"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:shovel_bronze" 1',
+	recipe = {
+		{ '', 'craft "moreores:bronze_ingot"', '' },
+		{ '', 'craft "Stick"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:axe_bronze" 1',
+	recipe = {
+		{ 'craft "moreores:bronze_ingot"', 'craft "moreores:bronze_ingot"', '' },
+		{ 'craft "moreores:bronze_ingot"', 'craft "Stick"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:sword_bronze" 1',
+	recipe = {
+		{ '', 'craft "moreores:bronze_ingot"', '' },
+		{ '', 'craft "moreores:bronze_ingot"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:pick_silver" 1',
+	recipe = {
+		{ 'craft "moreores:silver_ingot"', 'craft "moreores:silver_ingot"', 'craft "moreores:silver_ingot"' },
+		{ '', 'craft "Stick"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:shovel_silver" 1',
+	recipe = {
+		{ '', 'craft "moreores:silver_ingot"', '' },
+		{ '', 'craft "Stick"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:axe_silver" 1',
+	recipe = {
+		{ 'craft "moreores:silver_ingot"', 'craft "moreores:silver_ingot"', '' },
+		{ 'craft "moreores:silver_ingot"', 'craft "Stick"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:sword_silver" 1',
+	recipe = {
+		{ '', 'craft "moreores:silver_ingot"', '' },
+		{ '', 'craft "moreores:silver_ingot"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:pick_gold" 1',
+	recipe = {
+		{ 'craft "moreores:gold_ingot"', 'craft "moreores:gold_ingot"', 'craft "moreores:gold_ingot"' },
+		{ '', 'craft "Stick"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:shovel_gold" 1',
+	recipe = {
+		{ '', 'craft "moreores:gold_ingot"', '' },
+		{ '', 'craft "Stick"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:axe_gold" 1',
+	recipe = {
+		{ 'craft "moreores:gold_ingot"', 'craft "moreores:gold_ingot"', '' },
+		{ 'craft "moreores:gold_ingot"', 'craft "Stick"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:sword_gold" 1',
+	recipe = {
+		{ '', 'craft "moreores:gold_ingot"', '' },
+		{ '', 'craft "moreores:gold_ingot"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:pick_mithril" 1',
+	recipe = {
+		{ 'craft "moreores:mithril_ingot"', 'craft "moreores:mithril_ingot"', 'craft "moreores:mithril_ingot"' },
+		{ '', 'craft "Stick"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:shovel_mithril" 1',
+	recipe = {
+		{ '', 'craft "moreores:mithril_ingot"', '' },
+		{ '', 'craft "Stick"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:axe_mithril" 1',
+	recipe = {
+		{ 'craft "moreores:mithril_ingot"', 'craft "moreores:mithril_ingot"', '' },
+		{ 'craft "moreores:mithril_ingot"', 'craft "Stick"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:sword_mithril" 1',
+	recipe = {
+		{ '', 'craft "moreores:mithril_ingot"', '' },
+		{ '', 'craft "moreores:mithril_ingot"', '' },
+		{ '', 'craft "Stick"', '' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:bronze_ingot"',
+	recipe = {
+		{ 'craft "moreores:tin_ingot"'},
+		{ 'craft "moreores:copper_ingot"'},
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:bronze_ingot"',
+	recipe = {
+		{ 'craft "moreores:copper_ingot"'},
+		{ 'craft "moreores:tin_ingot"'},
+	}
+})
+
+minetest.register_craft( {
+	output = 'node "moreores:gold_block" 1',
+	recipe = {
+		{ 'craft "moreores:gold_ingot"', 'craft "moreores:gold_ingot"', 'craft "moreores:gold_ingot"' },
+		{ 'craft "moreores:gold_ingot"', 'craft "moreores:gold_ingot"', 'craft "moreores:gold_ingot"' },
+		{ 'craft "moreores:gold_ingot"', 'craft "moreores:gold_ingot"', 'craft "moreores:gold_ingot"' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:gold_ingot" 9',
+	recipe = {
+		{ 'node "moreores:gold_block"' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'node "moreores:silver_block" 1',
+	recipe = {
+		{ 'craft "moreores:silver_ingot"', 'craft "moreores:silver_ingot"', 'craft "moreores:silver_ingot"' },
+		{ 'craft "moreores:silver_ingot"', 'craft "moreores:silver_ingot"', 'craft "moreores:silver_ingot"' },
+		{ 'craft "moreores:silver_ingot"', 'craft "moreores:silver_ingot"', 'craft "moreores:silver_ingot"' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:silver_ingot" 9',
+	recipe = {
+		{ 'node "moreores:silver_block"' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'node "moreores:bronze_block" 1',
+	recipe = {
+		{ 'craft "moreores:bronze_ingot"', 'craft "moreores:bronze_ingot"', 'craft "moreores:bronze_ingot"' },
+		{ 'craft "moreores:bronze_ingot"', 'craft "moreores:bronze_ingot"', 'craft "moreores:bronze_ingot"' },
+		{ 'craft "moreores:bronze_ingot"', 'craft "moreores:bronze_ingot"', 'craft "moreores:bronze_ingot"' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:bronze_ingot" 9',
+	recipe = {
+		{ 'node "moreores:bronze_block"' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'node "moreores:mithril_block" 1',
+	recipe = {
+		{ 'craft "moreores:mithril_ingot"', 'craft "moreores:mithril_ingot"', 'craft "moreores:mithril_ingot"' },
+		{ 'craft "moreores:mithril_ingot"', 'craft "moreores:mithril_ingot"', 'craft "moreores:mithril_ingot"' },
+		{ 'craft "moreores:mithril_ingot"', 'craft "moreores:mithril_ingot"', 'craft "moreores:mithril_ingot"' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'craft "moreores:mithril_ingot" 9',
+	recipe = {
+		{ 'node "moreores:mithril_block"' },
+	}
+})
+
+-- Smelting
+
+minetest.register_craft({
+    type = "cooking",
+    output = "moreores:gold_ingot",
+    recipe = "moreores:gold_lump",
+})
+
+minetest.register_craft({
+    type = "cooking",
+    output = "moreores:silver_ingot",
+    recipe = "moreores:silver_lump",
+})
+
+minetest.register_craft({
+    type = "cooking",
+    output = "moreores:tin_ingot",
+    recipe = "moreores:tin_lump",
+})
+
+minetest.register_craft({
+    type = "cooking",
+    output = "moreores:copper_ingot",
+    recipe = "moreores:copper_lump",
+})
+
+minetest.register_craft({
+    type = "cooking",
+    output = "moreores:mithril_ingot",
+    recipe = "moreores:mithril_lump",
+})
+
+minetest.register_craft( {
+	output = 'node "default:chest_locked" 1',
+	recipe = {
+		{ 'craft "moreores:bronze_ingot"' },
+		{ 'node "default:chest"' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'node "default:chest_locked" 1',
+	recipe = {
+		{ 'craft "moreores:silver_ingot"' },
+		{ 'node "default:chest"' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'node "default:chest_locked" 1',
+	recipe = {
+		{ 'craft "moreores:gold_ingot"' },
+		{ 'node "default:chest"' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'node "default:chest_locked" 1',
+	recipe = {
+		{ 'node "default:wood"', 'node "default:wood"', 'node "default:wood"' },
+		{ 'node "default:wood"', 'craft "moreores:bronze_ingot"', 'node "default:wood"' },
+		{ 'node "default:wood"', 'node "default:wood"', 'node "default:wood"' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'node "default:chest_locked" 1',
+	recipe = {
+		{ 'node "default:wood"', 'node "default:wood"', 'node "default:wood"' },
+		{ 'node "default:wood"', 'craft "moreores:bronze_ingot"', 'node "default:wood"' },
+		{ 'node "default:wood"', 'node "default:wood"', 'node "default:wood"' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'node "default:chest_locked" 1',
+	recipe = {
+		{ 'node "default:wood"', 'node "default:wood"', 'node "default:wood"' },
+		{ 'node "default:wood"', 'craft "moreores:silver_ingot"', 'node "default:wood"' },
+		{ 'node "default:wood"', 'node "default:wood"', 'node "default:wood"' },
+	}
+})
+
+minetest.register_craft( {
+	output = 'node "default:chest_locked" 1',
+	recipe = {
+		{ 'node "default:wood"', 'node "default:wood"', 'node "default:wood"' },
+		{ 'node "default:wood"', 'craft "moreores:gold_ingot"', 'node "default:wood"' },
+		{ 'node "default:wood"', 'node "default:wood"', 'node "default:wood"' },
+	}
+})
+
+-- Ore generation
+
+local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, ore_per_chunk, height_min, height_max)
+	if maxp.y < height_min or minp.y > height_max then
+		return
+	end
+	local y_min = math.max(minp.y, height_min)
+	local y_max = math.min(maxp.y, height_max)
+	local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1)
+	local pr = PseudoRandom(seed)
+	local num_chunks = math.floor(chunks_per_volume * volume)
+	local chunk_size = 3
+	if ore_per_chunk <= 4 then
+		chunk_size = 2
+	end
+	local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk)
+	--print("generate_ore num_chunks: "..dump(num_chunks))
+	for i=1,num_chunks do
+	if (y_max-chunk_size+1 <= y_min) then return end
+		local y0 = pr:next(y_min, y_max-chunk_size+1)
+		if y0 >= height_min and y0 <= height_max then
+			local x0 = pr:next(minp.x, maxp.x-chunk_size+1)
+			local z0 = pr:next(minp.z, maxp.z-chunk_size+1)
+			local p0 = {x=x0, y=y0, z=z0}
+			for x1=0,chunk_size-1 do
+			for y1=0,chunk_size-1 do
+			for z1=0,chunk_size-1 do
+				if pr:next(1,inverse_chance) == 1 then
+					local x2 = x0+x1
+					local y2 = y0+y1
+					local z2 = z0+z1
+					local p2 = {x=x2, y=y2, z=z2}
+					if minetest.env:get_node(p2).name == wherein then
+						minetest.env:set_node(p2, {name=name})
+					end
+				end
+			end
+			end
+			end
+		end
+	end
+	--print("generate_ore done")
+end
+
+minetest.register_on_generated(function(minp, maxp, seed)
+generate_ore("moreores:mineral_copper", "default:stone", minp, maxp, seed+16,   1/11/11/11,    8, -31000,  64)
+generate_ore("moreores:mineral_tin", "default:stone", minp, maxp, seed+17,   1/8/8/8,    2, -31000,  8)
+generate_ore("moreores:mineral_silver", "default:stone", minp, maxp, seed+18,   1/10/10/10,    5, -31000,  2)
+generate_ore("moreores:mineral_gold", "default:stone", minp, maxp, seed+19,   1/12/12/12,    5, -31000,  -64)
+generate_ore("moreores:mineral_mithril", "default:stone", minp, maxp, seed+20,   1/6/6/6,    1, -31000,  -512)
+end)
\ No newline at end of file
diff --git a/textures/moreores_bronze_block.png b/textures/moreores_bronze_block.png
new file mode 100644
index 0000000000000000000000000000000000000000..de6a34a2903f8e083b9b6f8dcef810eadd8ba5fb
Binary files /dev/null and b/textures/moreores_bronze_block.png differ
diff --git a/textures/moreores_bronze_ingot.png b/textures/moreores_bronze_ingot.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7a73828b261789998e480f8f3bc684f2700fdbc
Binary files /dev/null and b/textures/moreores_bronze_ingot.png differ
diff --git a/textures/moreores_copper_block.png b/textures/moreores_copper_block.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8cdeea50a12c0b5775a1bb28080b187b23cffba
Binary files /dev/null and b/textures/moreores_copper_block.png differ
diff --git a/textures/moreores_copper_ingot.png b/textures/moreores_copper_ingot.png
new file mode 100644
index 0000000000000000000000000000000000000000..0c8ba11b31b6ed6a7f2b00afd482fc05b0a8098d
Binary files /dev/null and b/textures/moreores_copper_ingot.png differ
diff --git a/textures/moreores_copper_lump.png b/textures/moreores_copper_lump.png
new file mode 100644
index 0000000000000000000000000000000000000000..de03dcdff91846bf927eab72255dd385f012876a
Binary files /dev/null and b/textures/moreores_copper_lump.png differ
diff --git a/textures/moreores_copper_rail.png b/textures/moreores_copper_rail.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a0b56fc4ea976cbe9e802cc87cf74b0e5976780
Binary files /dev/null and b/textures/moreores_copper_rail.png differ
diff --git a/textures/moreores_copper_rail_crossing.png b/textures/moreores_copper_rail_crossing.png
new file mode 100644
index 0000000000000000000000000000000000000000..b23058c63f763e50f101be231a9604a06e7a3e2e
Binary files /dev/null and b/textures/moreores_copper_rail_crossing.png differ
diff --git a/textures/moreores_copper_rail_curved.png b/textures/moreores_copper_rail_curved.png
new file mode 100644
index 0000000000000000000000000000000000000000..3bd46820063d281a4def405d832cdbb2a8fe145f
Binary files /dev/null and b/textures/moreores_copper_rail_curved.png differ
diff --git a/textures/moreores_copper_rail_t_junction.png b/textures/moreores_copper_rail_t_junction.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8ecd9161a95d21ba30f51a8bd4fd9394b714ecc
Binary files /dev/null and b/textures/moreores_copper_rail_t_junction.png differ
diff --git a/textures/moreores_gold_block.png b/textures/moreores_gold_block.png
new file mode 100644
index 0000000000000000000000000000000000000000..84dec2855f442b1db4b95cac8341521b9bdbd657
Binary files /dev/null and b/textures/moreores_gold_block.png differ
diff --git a/textures/moreores_gold_ingot.png b/textures/moreores_gold_ingot.png
new file mode 100644
index 0000000000000000000000000000000000000000..fa1de151d45463fa2d4cfb966486ba48fb5c817f
Binary files /dev/null and b/textures/moreores_gold_ingot.png differ
diff --git a/textures/moreores_gold_lump.png b/textures/moreores_gold_lump.png
new file mode 100644
index 0000000000000000000000000000000000000000..432ba8bc8e4ff8b536986146fcc9467feb213333
Binary files /dev/null and b/textures/moreores_gold_lump.png differ
diff --git a/textures/moreores_mineral_copper.png b/textures/moreores_mineral_copper.png
new file mode 100644
index 0000000000000000000000000000000000000000..43cdb115efd6910670df65bccc00b038ff7d125c
Binary files /dev/null and b/textures/moreores_mineral_copper.png differ
diff --git a/textures/moreores_mineral_gold.png b/textures/moreores_mineral_gold.png
new file mode 100644
index 0000000000000000000000000000000000000000..e110b437d9f207d17e9e332d0fc3e60efc5a0edb
Binary files /dev/null and b/textures/moreores_mineral_gold.png differ
diff --git a/textures/moreores_mineral_mithril.png b/textures/moreores_mineral_mithril.png
new file mode 100644
index 0000000000000000000000000000000000000000..dcc3822b9a455690bfcdde81bb3755cf3c3c8b41
Binary files /dev/null and b/textures/moreores_mineral_mithril.png differ
diff --git a/textures/moreores_mineral_silver.png b/textures/moreores_mineral_silver.png
new file mode 100644
index 0000000000000000000000000000000000000000..a81e73f7129928e2808c32d96a27b6836e29e9cb
Binary files /dev/null and b/textures/moreores_mineral_silver.png differ
diff --git a/textures/moreores_mineral_tin.png b/textures/moreores_mineral_tin.png
new file mode 100644
index 0000000000000000000000000000000000000000..591920c64f2b5c9e30abce8565a39495edbbcca1
Binary files /dev/null and b/textures/moreores_mineral_tin.png differ
diff --git a/textures/moreores_mithril_block.png b/textures/moreores_mithril_block.png
new file mode 100644
index 0000000000000000000000000000000000000000..295af91d87f5edd2e29949162578a7d3e618810a
Binary files /dev/null and b/textures/moreores_mithril_block.png differ
diff --git a/textures/moreores_mithril_ingot.png b/textures/moreores_mithril_ingot.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f0e1ba53d92b497db7d3c1c118e063cf5d3f146
Binary files /dev/null and b/textures/moreores_mithril_ingot.png differ
diff --git a/textures/moreores_mithril_lump.png b/textures/moreores_mithril_lump.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b527b4312c52fcbbe255cd247092113f7ed90a1
Binary files /dev/null and b/textures/moreores_mithril_lump.png differ
diff --git a/textures/moreores_silver_block.png b/textures/moreores_silver_block.png
new file mode 100644
index 0000000000000000000000000000000000000000..e0ad5dfe59b5b030b334a603fa0708cc76d4ecbc
Binary files /dev/null and b/textures/moreores_silver_block.png differ
diff --git a/textures/moreores_silver_ingot.png b/textures/moreores_silver_ingot.png
new file mode 100644
index 0000000000000000000000000000000000000000..d07fdaad8dedbc339a6189a5d6572fcb7905d371
Binary files /dev/null and b/textures/moreores_silver_ingot.png differ
diff --git a/textures/moreores_silver_lump.png b/textures/moreores_silver_lump.png
new file mode 100644
index 0000000000000000000000000000000000000000..5093d9f07ec283724f8d0c091cfa9f2b0df82c3a
Binary files /dev/null and b/textures/moreores_silver_lump.png differ
diff --git a/textures/moreores_tin_block.png b/textures/moreores_tin_block.png
new file mode 100644
index 0000000000000000000000000000000000000000..e28c371c10cbee94543d0ce3daad141ea30be59f
Binary files /dev/null and b/textures/moreores_tin_block.png differ
diff --git a/textures/moreores_tin_ingot.png b/textures/moreores_tin_ingot.png
new file mode 100644
index 0000000000000000000000000000000000000000..b56279f35379c81618ccd04d4dbf683e5fbe5f2d
Binary files /dev/null and b/textures/moreores_tin_ingot.png differ
diff --git a/textures/moreores_tin_lump.png b/textures/moreores_tin_lump.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d815aa5e89a98adc224c836f498332164c9f2d2
Binary files /dev/null and b/textures/moreores_tin_lump.png differ
diff --git a/textures/moreores_tool_bronzeaxe.png b/textures/moreores_tool_bronzeaxe.png
new file mode 100644
index 0000000000000000000000000000000000000000..b6a4175ccb886ef1c993adb393b60bdd87ee6dd4
Binary files /dev/null and b/textures/moreores_tool_bronzeaxe.png differ
diff --git a/textures/moreores_tool_bronzepick.png b/textures/moreores_tool_bronzepick.png
new file mode 100644
index 0000000000000000000000000000000000000000..71aa983c71f2dae5c8fa5bd382d0a403cda07b36
Binary files /dev/null and b/textures/moreores_tool_bronzepick.png differ
diff --git a/textures/moreores_tool_bronzeshovel.png b/textures/moreores_tool_bronzeshovel.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e71203fd41794b0813dc9af1a75a9adb07a0323
Binary files /dev/null and b/textures/moreores_tool_bronzeshovel.png differ
diff --git a/textures/moreores_tool_bronzesword.png b/textures/moreores_tool_bronzesword.png
new file mode 100644
index 0000000000000000000000000000000000000000..366b648aaf9792f946613bbbca739d546a7533fe
Binary files /dev/null and b/textures/moreores_tool_bronzesword.png differ
diff --git a/textures/moreores_tool_goldaxe.png b/textures/moreores_tool_goldaxe.png
new file mode 100644
index 0000000000000000000000000000000000000000..41d4896e6e4da5c98be18387aca3572e00dd0d86
Binary files /dev/null and b/textures/moreores_tool_goldaxe.png differ
diff --git a/textures/moreores_tool_goldpick.png b/textures/moreores_tool_goldpick.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a65e8e2561b5200be5ae5134ba0be1fbfaa2ab9
Binary files /dev/null and b/textures/moreores_tool_goldpick.png differ
diff --git a/textures/moreores_tool_goldshovel.png b/textures/moreores_tool_goldshovel.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc72a1e24a411968a1e587ef12c1e29efaec1d47
Binary files /dev/null and b/textures/moreores_tool_goldshovel.png differ
diff --git a/textures/moreores_tool_goldsword.png b/textures/moreores_tool_goldsword.png
new file mode 100644
index 0000000000000000000000000000000000000000..db26f474a8afa0c2251ed19e9c2e300ae611de80
Binary files /dev/null and b/textures/moreores_tool_goldsword.png differ
diff --git a/textures/moreores_tool_mithrilaxe.png b/textures/moreores_tool_mithrilaxe.png
new file mode 100644
index 0000000000000000000000000000000000000000..68ba36e734704f8af08a7186ac39dc0353ab3702
Binary files /dev/null and b/textures/moreores_tool_mithrilaxe.png differ
diff --git a/textures/moreores_tool_mithrilpick.png b/textures/moreores_tool_mithrilpick.png
new file mode 100644
index 0000000000000000000000000000000000000000..6efb469f674e6d52c9b9896f25770da17889e6f1
Binary files /dev/null and b/textures/moreores_tool_mithrilpick.png differ
diff --git a/textures/moreores_tool_mithrilshovel.png b/textures/moreores_tool_mithrilshovel.png
new file mode 100644
index 0000000000000000000000000000000000000000..66916da213db2eda64e5e9ee8720d48df47aef5f
Binary files /dev/null and b/textures/moreores_tool_mithrilshovel.png differ
diff --git a/textures/moreores_tool_mithrilsword.png b/textures/moreores_tool_mithrilsword.png
new file mode 100644
index 0000000000000000000000000000000000000000..b9396d95fc637410339dc7c8f70fb75a5868a8f6
Binary files /dev/null and b/textures/moreores_tool_mithrilsword.png differ
diff --git a/textures/moreores_tool_silveraxe.png b/textures/moreores_tool_silveraxe.png
new file mode 100644
index 0000000000000000000000000000000000000000..e49fc75e66afd84f9be948911daa364477515b5d
Binary files /dev/null and b/textures/moreores_tool_silveraxe.png differ
diff --git a/textures/moreores_tool_silverpick.png b/textures/moreores_tool_silverpick.png
new file mode 100644
index 0000000000000000000000000000000000000000..d58e78352e047212a91ff005d76cb55f2a158ad3
Binary files /dev/null and b/textures/moreores_tool_silverpick.png differ
diff --git a/textures/moreores_tool_silvershovel.png b/textures/moreores_tool_silvershovel.png
new file mode 100644
index 0000000000000000000000000000000000000000..614c0a9db101c6a25ea4139940d4f75923f8a973
Binary files /dev/null and b/textures/moreores_tool_silvershovel.png differ
diff --git a/textures/moreores_tool_silversword.png b/textures/moreores_tool_silversword.png
new file mode 100644
index 0000000000000000000000000000000000000000..5344f468f62660abade9510c24c197462ec39a22
Binary files /dev/null and b/textures/moreores_tool_silversword.png differ