commit 50e4cf1fe0dfdcab721a2ce31b960649fa78bdc0 Author: rnd1 Date: Fri Nov 6 14:39:38 2015 +0100 bugfix: placing mese seed inside protection doesnt make mese seed disappear diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/depends.txt @@ -0,0 +1 @@ +default diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..e2b66f1 --- /dev/null +++ b/init.lua @@ -0,0 +1,248 @@ +minetest.register_node("mese_crystals:mese_crystal_ore1", { + description = "Mese Crystal Ore", + mesh = "mese_crystal_ore1.obj", + tiles = {"crystal.png"}, + paramtype = "light", + drawtype = "mesh", + groups = {cracky = 1}, + drop = "default:mese_crystal 1", + use_texture_alpha = true, + sounds = default.node_sound_stone_defaults(), + light_source = 7, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + }, +}) + +minetest.register_node("mese_crystals:mese_crystal_ore2", { + description = "Mese Crystal Ore", + mesh = "mese_crystal_ore2.obj", + tiles = {"crystal.png"}, + paramtype = "light", + drawtype = "mesh", + groups = {cracky = 1}, + drop = "default:mese_crystal 2", + use_texture_alpha = true, + sounds = default.node_sound_stone_defaults(), + light_source = 8, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + }, +}) + +minetest.register_node("mese_crystals:mese_crystal_ore3", { + description = "Mese Crystal Ore", + mesh = "mese_crystal_ore3.obj", + tiles = {"crystal.png"}, + paramtype = "light", + drawtype = "mesh", + groups = {cracky = 1}, + drop = "default:mese_crystal 3", + use_texture_alpha = true, + sounds = default.node_sound_stone_defaults(), + light_source = 9, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + }, +}) + +minetest.register_node("mese_crystals:mese_crystal_ore4", { + description = "Mese Crystal Ore", + mesh = "mese_crystal_ore4.obj", + tiles = {"crystal.png"}, + paramtype = "light", + drawtype = "mesh", + groups = {cracky = 1}, + drop = "default:mese_crystal 4", + use_texture_alpha = true, + sounds = default.node_sound_stone_defaults(), + light_source = 10, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + }, +}) + +minetest.register_tool("mese_crystals:crystaline_bell", { + description = "Crystaline Bell", + inventory_image = "crystalline_bell.png", + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then + return + end + local pos = pointed_thing.under + local node = minetest.get_node(pos) + local growth_stage = 0 + if node.name == "mese_crystals:mese_crystal_ore4" then + growth_stage = 4 + elseif node.name == "mese_crystals:mese_crystal_ore3" then + growth_stage = 3 + elseif node.name == "mese_crystals:mese_crystal_ore2" then + growth_stage = 2 + elseif node.name == "mese_crystals:mese_crystal_ore1" then + growth_stage = 1 + end + if growth_stage == 4 then + node.name = "mese_crystals:mese_crystal_ore3" + minetest.swap_node(pos, node) + elseif growth_stage == 3 then + node.name = "mese_crystals:mese_crystal_ore2" + minetest.swap_node(pos, node) + elseif growth_stage == 2 then + node.name = "mese_crystals:mese_crystal_ore1" + minetest.swap_node(pos, node) + end + if growth_stage > 1 then + itemstack:add_wear(65535 / 100) + local player_inv = user:get_inventory() + local stack = ItemStack("default:mese_crystal") + if player_inv:room_for_item("main", stack) then + player_inv:add_item("main", stack) + end + return itemstack + end + end, +}) + +minetest.register_craftitem("mese_crystals:mese_crystal_seed", { + description = "Mese Crystal Seed", + inventory_image = "mese_crystal_seed.png", + on_place = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then + return + end + local pos = pointed_thing.under + local node = minetest.get_node(pos) + if node.name == "default:obsidian" then + local pos1 = pointed_thing.above + local node1 = minetest.get_node(pos1) + if node1.name == "air" and not minetest.is_protected(pos1, user:get_player_name())then + itemstack:take_item() + node.name = "mese_crystals:mese_crystal_ore1" + minetest.set_node(pos1, {name=node.name}) + end + end + return itemstack + end, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "mese_crystals:mese_crystal_ore1", + wherein = "default:stone", + clust_scarcity = 18 * 18 * 18, + clust_num_ores = 1, + clust_size = 1, + y_min = -255, + y_max = -64, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "mese_crystals:mese_crystal_ore2", + wherein = "default:stone", + clust_scarcity = 20 * 20 * 20, + clust_num_ores = 1, + clust_size = 1, + y_min = -31000, + y_max = -256, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "mese_crystals:mese_crystal_ore3", + wherein = "default:stone", + clust_scarcity = 20 * 20 * 20, + clust_num_ores = 1, + clust_size = 1, + y_min = -31000, + y_max = -256, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "mese_crystals:mese_crystal_ore4", + wherein = "default:stone", + clust_scarcity = 20 * 20 * 20, + clust_num_ores = 1, + clust_size = 1, + y_min = -31000, + y_max = -256, +}) + +function check_lava (pos) + local name = minetest.get_node(pos).name + if name == "default:lava_source" or name == "default:lava_flowing" then + return 1 + else + return 0 + end +end + +function grow_mese_crystal_ore(pos, node) + local pos1 = {x = pos.x, y = pos.y, z = pos.z} + pos1.y = pos1.y - 1 + local name = minetest.get_node(pos1).name + if name ~= "default:obsidian" then + return + end + + local lava_count = 0 + pos1.z = pos.z - 1 + lava_count = lava_count + check_lava(pos1) + pos1.z = pos.z + 1 + lava_count = lava_count + check_lava(pos1) + pos1.z = pos.z + pos1.x = pos.x - 1 + lava_count = lava_count + check_lava(pos1) + pos1.x = pos.x + 1 + lava_count = lava_count + check_lava(pos1) + if lava_count < 2 then + return + end + + if node.name == "mese_crystals:mese_crystal_ore3" then + node.name = "mese_crystals:mese_crystal_ore4" + minetest.swap_node(pos, node) + elseif node.name == "mese_crystals:mese_crystal_ore2" then + node.name = "mese_crystals:mese_crystal_ore3" + minetest.swap_node(pos, node) + elseif node.name == "mese_crystals:mese_crystal_ore1" then + node.name = "mese_crystals:mese_crystal_ore2" + minetest.swap_node(pos, node) + end + +end + +minetest.register_abm({ + nodenames = {"mese_crystals:mese_crystal_ore1", "mese_crystals:mese_crystal_ore2", + "mese_crystals:mese_crystal_ore3"}, + neighbors = {"default:obsidian", "default:lava_source"}, + interval = 80, + chance = 20, + action = function(...) + grow_mese_crystal_ore(...) + end +}) + +minetest.register_craft({ + output = "mese_crystals:mese_crystal_seed", + recipe = { + {'default:mese_crystal','default:mese_crystal','default:mese_crystal'}, + {'default:mese_crystal','default:obsidian_shard','default:mese_crystal'}, + {'default:mese_crystal','default:mese_crystal','default:mese_crystal'}, + } +}) + +minetest.register_craft({ + output = "mese_crystals:crystaline_bell", + recipe = { + {'default:diamond'}, + {'default:glass'}, + {'default:stick'}, + } +}) + diff --git a/textures/crystal.png b/textures/crystal.png new file mode 100644 index 0000000..67317a0 Binary files /dev/null and b/textures/crystal.png differ diff --git a/textures/crystal_normal.png b/textures/crystal_normal.png new file mode 100644 index 0000000..158cf2f Binary files /dev/null and b/textures/crystal_normal.png differ diff --git a/textures/crystalline_bell.png b/textures/crystalline_bell.png new file mode 100644 index 0000000..6211365 Binary files /dev/null and b/textures/crystalline_bell.png differ diff --git a/textures/mese_crystal_seed.png b/textures/mese_crystal_seed.png new file mode 100644 index 0000000..890486e Binary files /dev/null and b/textures/mese_crystal_seed.png differ