From 598a2977b5bca143b03940bb1f143ffa8ace5c41 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 5 Jul 2017 23:48:48 +0200 Subject: [PATCH] Add monster egg blocks --- mods/ENTITIES/mobs_mc_gameconfig/init.lua | 11 +++--- mods/ITEMS/mcl_monster_eggs/depends.txt | 3 ++ mods/ITEMS/mcl_monster_eggs/init.lua | 41 +++++++++++++++++++++ mods/ITEMS/mcl_monster_eggs/intllib.lua | 45 +++++++++++++++++++++++ mods/MAPGEN/mcl_mapgen_core/init.lua | 20 ++++++++++ 5 files changed, 115 insertions(+), 5 deletions(-) create mode 100644 mods/ITEMS/mcl_monster_eggs/depends.txt create mode 100644 mods/ITEMS/mcl_monster_eggs/init.lua create mode 100644 mods/ITEMS/mcl_monster_eggs/intllib.lua diff --git a/mods/ENTITIES/mobs_mc_gameconfig/init.lua b/mods/ENTITIES/mobs_mc_gameconfig/init.lua index 57f731446..e4a753ebb 100644 --- a/mods/ENTITIES/mobs_mc_gameconfig/init.lua +++ b/mods/ENTITIES/mobs_mc_gameconfig/init.lua @@ -155,12 +155,13 @@ mobs_mc.replace = { { "mcl_flowers:tallgrass", "air", 0 }, }, -- Silverfish populate stone, etc. with monster eggs - -- TODO: add nodes silverfish = { - {"mcl_core:stone", "mobs_mc:monster_egg_stone", -1}, - {"mcl_core:cobble", "mobs_mc:monster_egg_cobble", -1}, - {"mcl_core:stonebrick", "mobs_mc:monster_egg_stonebrick", -1}, - {"mcl_core:mossystonebrick", "mobs_mc:monster_egg_mossystonebrick", -1}, + {"mcl_core:stone", "mcl_monster_eggs:monster_egg_stone", -1}, + {"mcl_core:cobble", "mcl_monster_eggs:monster_egg_cobble", -1}, + {"mcl_core:stonebrick", "mcl_monster_eggs:monster_egg_stonebrick", -1}, + {"mcl_core:stonebrickmossy", "mcl_monster_eggs:monster_egg_stonebrickmossy", -1}, + {"mcl_core:stonebrickcracked", "mcl_monster_eggs:monster_egg_stonebrickcracked", -1}, + {"mcl_core:stonebrickcarved", "mcl_monster_eggs:monster_egg_stonebrickcarved", -1}, }, } diff --git a/mods/ITEMS/mcl_monster_eggs/depends.txt b/mods/ITEMS/mcl_monster_eggs/depends.txt new file mode 100644 index 000000000..fde951c96 --- /dev/null +++ b/mods/ITEMS/mcl_monster_eggs/depends.txt @@ -0,0 +1,3 @@ +mcl_sounds +mobs_mc +intllib? diff --git a/mods/ITEMS/mcl_monster_eggs/init.lua b/mods/ITEMS/mcl_monster_eggs/init.lua new file mode 100644 index 000000000..43c96c01f --- /dev/null +++ b/mods/ITEMS/mcl_monster_eggs/init.lua @@ -0,0 +1,41 @@ +-- Monster eggs! +-- Blocks which spawn silverfish when destroyed. + +-- Intllib +local MP = minetest.get_modpath(minetest.get_current_modname()) +local S, NS = dofile(MP .. "/intllib.lua") + +local spawn_silverfish = function(pos, oldnode, oldmetadata, digger) + if not minetest.setting_getbool("creative_mode") then + minetest.add_entity(pos, "mobs_mc:silverfish") + end +end + +-- Template function for registering monster egg blocks +local register_block = function(subname, description, tiles, is_ground_content) + if is_ground_content == nil then + is_ground_content = false + end + minetest.register_node("mcl_monster_eggs:monter_egg_"..subname, { + description = description, + tiles = tiles, + is_ground_content = is_ground_content, + groups = {handy = 1, spawns_silverfish = 1, deco_block = 1}, + drop = '', + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + after_dig_node = spawn_silverfish, + _mcl_hardness = 0.75, + _mcl_blast_resistance = 3.75, + }) +end + +-- Register all the monster egg blocks +register_block("stone", S("Stone Monster Egg"), {"default_stone.png"}, true) +register_block("cobble", S("Cobblestone Monster Egg"), {"default_cobble.png"}) +register_block("stonebrick", S("Stone Bricks Monster Egg"), {"default_stone_brick.png"}) +register_block("stonebrickcracked", S("Cracked Stone Bricks Monster Egg"), {"mcl_core_stonebrick_cracked.png"}) +register_block("stonebrickmossy", S("Mossy Stone Bricks Monster Egg"), {"mcl_core_stonebrick_mossy.png"}) +register_block("stonebrickcarved", S("Chiseled Stone Bricks Monster Egg"), {"mcl_core_stonebrick_carved.png"}) + + diff --git a/mods/ITEMS/mcl_monster_eggs/intllib.lua b/mods/ITEMS/mcl_monster_eggs/intllib.lua new file mode 100644 index 000000000..6669d7202 --- /dev/null +++ b/mods/ITEMS/mcl_monster_eggs/intllib.lua @@ -0,0 +1,45 @@ + +-- Fallback functions for when `intllib` is not installed. +-- Code released under Unlicense . + +-- Get the latest version of this file at: +-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua + +local function format(str, ...) + local args = { ... } + local function repl(escape, open, num, close) + if escape == "" then + local replacement = tostring(args[tonumber(num)]) + if open == "" then + replacement = replacement..close + end + return replacement + else + return "@"..open..num..close + end + end + return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) +end + +local gettext, ngettext +if minetest.get_modpath("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + gettext, ngettext = intllib.make_gettext_pair() + else + -- Old method using text files. + gettext = intllib.Getter() + end +end + +-- Fill in missing functions. + +gettext = gettext or function(msgid, ...) + return format(msgid, ...) +end + +ngettext = ngettext or function(msgid, msgid_plural, n, ...) + return format(n==1 and msgid or msgid_plural, ...) +end + +return gettext, ngettext diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 51619d588..e2b0084c2 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -580,6 +580,26 @@ minetest.register_ore({ end +-- Rarely replace stone with stone monster eggs +local scarcity +if mg_name == "v6" then + monster_egg_scarcity = 28 * 28 * 28 +else + monster_egg_scarcity = 22 * 22 * 22 +end +minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_monster_eggs:monster_egg_stone", + wherein = "mcl_core:stone", + clust_scarcity = monster_egg_scarcity, + clust_num_ores = 3, + clust_size = 2, + y_min = -31000, + y_max = 31000, + -- TODO: Limit by biome +}) + + local function register_mgv6_decorations() -- Sugar canes