diff --git a/mods/ethereal/mod.conf b/mods/ethereal/mod.conf new file mode 100644 index 00000000..e001f908 --- /dev/null +++ b/mods/ethereal/mod.conf @@ -0,0 +1 @@ +name = ethereal \ No newline at end of file diff --git a/mods/ethereal/mushroom.lua b/mods/ethereal/mushroom.lua new file mode 100644 index 00000000..f89b2e88 --- /dev/null +++ b/mods/ethereal/mushroom.lua @@ -0,0 +1,27 @@ + +local S = ethereal.intllib + +-- mushroom soup (Heals 1 heart) +minetest.register_craftitem("ethereal:mushroom_soup", { + description = S("Mushroom Soup"), + inventory_image = "mushroom_soup.png", + on_use = minetest.item_eat(5, "ethereal:bowl"), +}) + +minetest.register_craft({ + output = "ethereal:mushroom_soup", + recipe = { + {"flowers:mushroom_brown"}, + {"flowers:mushroom_brown"}, + {"group:food_bowl"}, + } +}) + +-- 4x red mushrooms make mushroom block +minetest.register_craft({ + output = "ethereal:mushroom", + recipe = { + {"flowers:mushroom_red", "flowers:mushroom_red"}, + {"flowers:mushroom_red", "flowers:mushroom_red"}, + } +}) \ No newline at end of file diff --git a/mods/ethereal/onion.lua b/mods/ethereal/onion.lua new file mode 100644 index 00000000..69671c35 --- /dev/null +++ b/mods/ethereal/onion.lua @@ -0,0 +1,104 @@ + +local S = ethereal.intllib + +-- wild onion +minetest.register_craftitem("ethereal:wild_onion_plant", { + description = S("Wild Onion"), + inventory_image = "wild_onion.png", + wield_image = "wild_onion.png", + groups = {food_onion = 1, flammable = 2}, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "ethereal:wild_onion_1") + end, + on_use = minetest.item_eat(2), +}) + +-- Define Onion growth stages +local crop_def = { + drawtype = "plantlike", + tiles = {"ethereal_wild_onion_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5} + }, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1 + }, + sounds = default.node_sound_leaves_defaults(), +} + +--stage 1 +minetest.register_node("ethereal:onion_1", table.copy(crop_def)) + +--stage 2 +crop_def.tiles = {"ethereal_wild_onion_2.png"} +minetest.register_node("ethereal:onion_2", table.copy(crop_def)) + +--stage 3 +crop_def.tiles = {"ethereal_wild_onion_3.png"} +minetest.register_node("ethereal:onion_3", table.copy(crop_def)) + +--stage 4 +crop_def.tiles = {"ethereal_wild_onion_4.png"} +crop_def.drop = { + items = { + {items = {"ethereal:wild_onion_plant"}, rarity = 1}, + {items = {"ethereal:wild_onion_plant 2"}, rarity = 3}, + } +} +minetest.register_node("ethereal:onion_4", table.copy(crop_def)) + +--stage 5 +crop_def.tiles = {"ethereal_wild_onion_5.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"ethereal:wild_onion_plant 2"}, rarity = 1}, + {items = {"ethereal:wild_onion_plant 3"}, rarity = 2}, + } +} +minetest.register_node("ethereal:onion_5", table.copy(crop_def)) + +-- growing routine if farming redo isn't present +if not farming or not farming.mod or farming.mod ~= "redo" then + +minetest.register_abm({ + label = "Ethereal grow onion", + nodenames = {"ethereal:onion_1", "ethereal:onion_2", "ethereal:onion_3", "ethereal:onion_4"}, + neighbors = {"farming:soil_wet"}, + interval = 9, + chance = 20, + catch_up = false, + action = function(pos, node) + + -- are we on wet soil? + pos.y = pos.y - 1 + if minetest.get_item_group(minetest.get_node(pos).name, "soil") < 3 then + return + end + pos.y = pos.y + 1 + + -- do we have enough light? + local light = minetest.get_node_light(pos) + + if not light + or light < 13 then + return + end + + -- grow to next stage + local num = node.name:split("_")[2] + + node.name = "ethereal:onion_" .. tonumber(num + 1) + + minetest.swap_node(pos, node) + end +}) + +end -- END IF diff --git a/mods/ethereal/ores.lua b/mods/ethereal/ores.lua new file mode 100644 index 00000000..27daa3f4 --- /dev/null +++ b/mods/ethereal/ores.lua @@ -0,0 +1,91 @@ + +-- Baked Clay + +minetest.register_ore({ + ore_type = "blob", + ore = "bakedclay:red", + wherein = {"bakedclay:orange"}, + clust_scarcity = 4 * 4 * 4, + clust_num_ores = 8, + clust_size = 6, + y_min = -10, + y_max = 71, + noise_params = { + offset = 0.35, + scale = 0.2, + spread = {x = 5, y = 5, z = 5}, + seed = -316, + octaves = 1, + persist = 0.5 + }, +}) + +minetest.register_ore({ + ore_type = "blob", + ore = "bakedclay:grey", + wherein = {"bakedclay:orange"}, + clust_scarcity = 4 * 4 * 4, + clust_num_ores = 8, + clust_size = 6, + y_min = -10, + y_max = 71, + noise_params = { + offset = 0.35, + scale = 0.2, + spread = {x = 5, y = 5, z = 5}, + seed = -613, + octaves = 1, + persist = 0.5 + }, +}) + +local add_ore = function(a, b, c, d, e, f, g) + + minetest.register_ore({ + ore_type = "scatter", + ore = a, + wherein = b, + clust_scarcity = c, + clust_num_ores = d, + clust_size = e, + y_min = f, + y_max = g, + }) +end + +-- Coal +add_ore("default:stone_with_coal", "default:desert_stone", 24*24*24, 27, 6, -31000, -16) + +-- Iron +add_ore("default:stone_with_iron", "default:desert_stone", 9*9*9, 5, 3, -63, -16) +add_ore("default:stone_with_iron", "default:desert_stone", 24*24*24, 27, 6, -31000, -64) + +--Mese +add_ore("default:stone_with_mese", "default:desert_stone", 14*14*14, 5, 3, -31000, -256) + +-- Gold +add_ore("default:stone_with_gold", "default:desert_stone", 15*15*15, 3, 2, -255, -64) +add_ore("default:stone_with_gold", "default:desert_stone", 13*13*13, 5, 3, -31000, -256) + +-- Diamond +add_ore("default:stone_with_diamond", "default:desert_stone", 17*17*17, 4, 3, -255, -128) +add_ore("default:stone_with_diamond", "default:desert_stone", 15*15*15, 4, 3, -31000, -256) + +-- Copper +add_ore("default:stone_with_copper", "default:desert_stone", 9*9*9, 5, 3, -31000, -64) + +-- Coral Sand +add_ore("ethereal:sandy", "default:sand", 10*10*10, 24, 4, -100, -10) + +-- Etherium +minetest.register_ore({ + ore_type = "scatter", + ore = "ethereal:etherium_ore", + wherein = "default:desert_stone", + clust_scarcity = 10*10*10, + clust_num_ores = 1, + clust_size = 1, + y_min = 5, + y_max = 40, + biomes = {"caves"}, +}) diff --git a/mods/ethereal/plantlife.lua b/mods/ethereal/plantlife.lua new file mode 100644 index 00000000..eb989f38 --- /dev/null +++ b/mods/ethereal/plantlife.lua @@ -0,0 +1,312 @@ + +local S = ethereal.intllib + +-- Firethorn (poisonous when eaten raw, must be crushed and washed in flowing water 1st) +minetest.register_node("ethereal:firethorn", { + description = S("Firethorn Shrub"), + drawtype = "plantlike", + tiles = {"ethereal_firethorn.png"}, + inventory_image = "ethereal_firethorn.png", + wield_image = "ethereal_firethorn.png", + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + groups = {snappy = 3, flora = 1, attached_node = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 4 / 16, 5 / 16}, + }, +}) + +-- Fire Flower +minetest.register_node("ethereal:fire_flower", { + description = S("Fire Flower"), + drawtype = "plantlike", + tiles = { "ethereal_fire_flower.png" }, + inventory_image = "ethereal_fire_flower.png", + wield_image = "ethereal_fire_flower.png", + paramtype = "light", + light_source = 5, + sunlight_propagates = true, + walkable = false, + buildable_to = true, + damage_per_second = 2, + groups = {snappy = 1, oddly_breakable_by_hand = 3, igniter = 2}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 1 / 2, 5 / 16}, + }, + + on_punch = function(pos, node, puncher) + + puncher:punch(puncher, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = 2} + }, nil) + end, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "ethereal:fire_flower", + burntime = 20, +}) + +-- Fire Dust +minetest.register_craftitem("ethereal:fire_dust", { + description = S("Fire Dust"), + inventory_image = "fire_dust.png", +}) + +minetest.register_craft({ + output = "ethereal:fire_dust 2", + recipe = { + {"ethereal:fire_flower"}, + } +}) + +minetest.register_craft({ + type = "fuel", + recipe = "ethereal:fire_dust", + burntime = 10, +}) + +-- vines +minetest.register_node("ethereal:vine", { + description = S("Vine"), + drawtype = "signlike", + tiles = {"vine.png"}, + inventory_image = "vine.png", + wield_image = "vine.png", + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + climbable = true, + is_ground_content = false, + selection_box = { + type = "wallmounted", + }, + groups = {choppy = 3, oddly_breakable_by_hand = 1, flammable = 2}, + legacy_wallmounted = true, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_craft({ + output = "ethereal:vine 2", + recipe = { + {"group:leaves", "", "group:leaves"}, + {"", "group:leaves", ""}, + {"group:leaves", "", "group:leaves"}, + } +}) + +-- light strings (glowing vine) +minetest.register_node("ethereal:lightstring", { + description = S("Light String Vine"), + drawtype = "signlike", + tiles = {"lightstring.png"}, + inventory_image = "lightstring.png", + wield_image = "lightstring.png", + paramtype = "light", + paramtype2 = "wallmounted", + light_source = 10, + walkable = false, + climbable = true, + is_ground_content = false, + selection_box = { + type = "wallmounted", + }, + groups = {choppy = 3, oddly_breakable_by_hand = 1, flammable = 2}, + legacy_wallmounted = true, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_craft({ + output = "ethereal:lightstring 8", + recipe = { + {"ethereal:vine", "ethereal:vine", "ethereal:vine"}, + {"ethereal:vine", "ethereal:fire_dust", "ethereal:vine"}, + {"ethereal:vine", "ethereal:vine", "ethereal:vine"}, + }, +}) + +-- Fern (boston) +minetest.register_node("ethereal:fern", { + description = S("Fern"), + drawtype = "plantlike", + visual_scale = 1.4, + tiles = {"fern.png"}, + inventory_image = "fern.png", + wield_image = "fern.png", + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = { + max_items = 1, + items = { + {items = {"ethereal:fern_tubers"}, rarity = 6}, + {items = {"ethereal:fern"}} + } + }, + groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 2}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 0.67, 5 / 16}, + }, +}) + +-- Boston Ferns sometimes drop edible Tubers (heals 1/2 heart when eaten) +minetest.register_craftitem("ethereal:fern_tubers", { + description = S("Fern Tubers"), + inventory_image = "fern_tubers.png", + groups = {food_tuber = 1, flammable = 2}, + on_use = minetest.item_eat(1), +}) + +-- Red Shrub (not flammable) +minetest.register_node("ethereal:dry_shrub", { + description = S("Fiery Dry Shrub"), + drawtype = "plantlike", + tiles = {"ethereal_dry_shrub.png"}, + inventory_image = "ethereal_dry_shrub.png", + wield_image = "ethereal_dry_shrub.png", + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + groups = {snappy = 3, flora = 1, attached_node = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 4 / 16, 5 / 16}, + }, +}) + +-- Grey Shrub (not Flammable - too cold to burn) +minetest.register_node("ethereal:snowygrass", { + description = S("Snowy Grass"), + drawtype = "plantlike", + visual_scale = 0.9, + tiles = {"ethereal_snowygrass.png"}, + inventory_image = "ethereal_snowygrass.png", + wield_image = "ethereal_snowygrass.png", + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + groups = {snappy = 3, flora = 1, attached_node = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 5 / 16, 5 / 16}, + }, +}) + +-- Crystal Shrub (not Flammable - too cold to burn) +minetest.register_node("ethereal:crystalgrass", { + description = S("Crystal Grass"), + drawtype = "plantlike", + visual_scale = 0.9, + tiles = {"ethereal_crystalgrass.png"}, + inventory_image = "ethereal_crystalgrass.png", + wield_image = "ethereal_crystalgrass.png", + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + groups = {snappy = 3, flora = 1, attached_node = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 5 / 16, 5 / 16}, + }, +}) + +-- Define Moss Types (Has grass textures on all sides) +local add_moss = function(typ, descr, texture, receipe_item) + + minetest.register_node("ethereal:" .. typ .. "_moss", { + description = S(descr .. " Moss"), + tiles = {texture}, + groups = {crumbly = 3}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name = "default_grass_footstep", gain = 0.4}}) + }) + + minetest.register_craft({ + type = "shapeless", + output = "ethereal:"..typ.."_moss", + recipe = {"default:dirt", receipe_item } + }) +end + +add_moss( "crystal", "Crystal", "ethereal_grass_crystal_top.png", "ethereal:frost_leaves") +add_moss( "mushroom", "Mushroom", "ethereal_grass_mushroom_top.png", "ethereal:mushroom") +add_moss( "fiery", "Fiery", "ethereal_grass_fiery_top.png", "ethereal:dry_shrub") +add_moss( "gray", "Gray", "ethereal_grass_gray_top.png", "ethereal:snowygrass") +add_moss( "green", "Green", "default_grass.png", "default:jungleleaves") + +-- Illuminated Cave Shrooms (Red, Green and Blue) +minetest.register_node("ethereal:illumishroom", { + description = S("Red Illumishroom"), + drawtype = "plantlike", + tiles = { "illumishroom.png" }, + inventory_image = "illumishroom.png", + wield_image = "illumishroom.png", + paramtype = "light", + light_source = 5, + sunlight_propagates = true, + walkable = false, + groups = {dig_immediate = 3, attached_node = 1, flammable = 3}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.47, 6 / 16}, + }, +}) + +minetest.register_node("ethereal:illumishroom2", { + description = S("Green Illumishroom"), + drawtype = "plantlike", + tiles = { "illumishroom2.png" }, + inventory_image = "illumishroom2.png", + wield_image = "illumishroom2.png", + paramtype = "light", + light_source = 5, + sunlight_propagates = true, + walkable = false, + groups = {dig_immediate = 3, attached_node = 1, flammable = 3}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.47, 6 / 16}, + }, +}) + +minetest.register_node("ethereal:illumishroom3", { + description = S("Cyan Illumishroom"), + drawtype = "plantlike", + tiles = { "illumishroom3.png" }, + inventory_image = "illumishroom3.png", + wield_image = "illumishroom3.png", + paramtype = "light", + light_source = 5, + sunlight_propagates = true, + walkable = false, + groups = {dig_immediate = 3, attached_node = 1, flammable = 3}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.47, 6 / 16}, + }, +})