Remove mobs_mc_gameconfig

This commit is contained in:
Elias Fleckenstein 2022-05-25 23:25:15 +02:00 committed by cora
parent d887a97310
commit e7898352d8
81 changed files with 570 additions and 2166 deletions

View file

@ -14,7 +14,7 @@ mcl_damage = {
cactus = {},
fall = {bypasses_armor = true},
fly_into_wall = {bypasses_armor = true}, -- unused
out_of_world = {bypasses_armor = true, bypasses_magic = true, bypasses_invulnerability = true},
out_of_world = {bypasses_armor = true, bypasses_magic = true, bypasses_invulnerability = true, bypasses_totem = true},
generic = {bypasses_armor = true},
magic = {is_magic = true, bypasses_armor = true},
dragon_breath = {is_magic = true, bypasses_armor = true}, -- this is only used for dragon fireball; dragon fireball does not actually deal impact damage tho, so this is unreachable

View file

@ -43,8 +43,9 @@ local function wither_spawn(pos)
end
end
local old_onplace=minetest.registered_nodes[mobs_mc.items.head_wither_skeleton].on_place
minetest.registered_nodes[mobs_mc.items.head_wither_skeleton].on_place=function(itemstack,placer,pointed)
local wither_head = minetest.registered_nodes["mcl_heads:wither_skeleton"]
local old_on_place = wither_head.on_place
function wither_head.on_place(itemstack, placer, pointed)
minetest.after(0, wither_spawn, pointed.above)
old_onplace(itemstack,placer,pointed)
old_on_place(itemstack, placer, pointed)
end

View file

@ -1,276 +0,0 @@
--[[ This table contains the concrete itemstrings to be used by this mod.
All mobs in this mod must use variables in this table, instead
of hardcoding the itemstring.
This way, external mods are enabled to replace the itemstrings to provide
their own items and game integration is made much simpler.
An item IDs is supposed to be overwritten by adding
mobs_mc.override.items["example:item"] in a game mod
with name "mobs_mc_gameconfig". ]]
-- Standard items
-- If true, mobs_mc adds the monster egg nodes (needs default mod).
-- Set to false in your gameconfig mod if you create your own monster egg nodes.
mobs_mc.create_monster_egg_nodes = true
mobs_mc.items = {}
mobs_mc.items = {
-- Items defined in mobs_mc
blaze_rod = "mobs_mc:blaze_rod",
blaze_powder = "mobs_mc:blaze_powder",
chicken_raw = "mobs_mc:chicken_raw",
chicken_cooked = "mobs_mc:chicken_cooked",
feather = "mobs_mc:feather",
beef_raw = "mobs_mc:beef_raw",
beef_cooked = "mobs_mc:beef_cooked",
bowl = "mobs_mc:bowl",
mushroom_stew = "mobs_mc:mushroom_stew",
milk = "mobs_mc:milk_bucket",
dragon_egg = "mobs_mc:dragon_egg",
egg = "mobs_mc:egg",
ender_eye = "mobs_mc:ender_eye",
ghast_tear = "mobs_mc:ghast_tear",
saddle = "mobs:saddle",
iron_horse_armor = "mobs_mc:iron_horse_armor",
gold_horse_armor = "mobs_mc:gold_horse_armor",
diamond_horse_armor = "mobs_mc:diamond_horse_armor",
porkchop_raw = "mobs_mc:porkchop_raw",
porkchop_cooked = "mobs_mc:porkchop_cooked",
carrot_on_a_stick = "mobs_mc:carrot_on_a_stick",
rabbit_raw = "mobs_mc:rabbit_raw",
rabbit_cooked = "mobs_mc:rabbit_cooked",
rabbit_hide = "mobs_mc:rabbit_hide",
mutton_raw = "mobs_mc:mutton_raw",
mutton_cooked = "mobs_mc:mutton_cooked",
shulker_shell = "mobs_mc:shulker_shell",
magma_cream = "mobs_mc:magma_cream",
spider_eye = "mobs_mc:spider_eye",
snowball = "mobs_mc:snowball",
totem = "mobs_mc:totem",
rotten_flesh = "mobs_mc:rotten_flesh",
nether_star = "mobs_mc:nether_star",
bone = "mobs_mc:bone",
slimeball = "mobs_mc:slimeball",
arrow = "mobs_mc:arrow",
bow = "mobs_mc:bow_wood",
head_creeper = "mobs_mc:head_creeper",
head_zombie = "mobs_mc:head_zombie",
head_skeleton = "mobs_mc:head_skeleton",
head_wither_skeleton = "mobs_mc:head_wither_skeleton",
-- External items
-- Mobs Redo
leather = "mobs:leather",
shears = "mobs:shears",
-- Minetest Game
top_snow = "default:snow",
snow_block = "default:snowblock",
mushroom_red = "flowers:mushroom_red",
bucket = "bucket:bucket_empty",
grass_block = "default:dirt_with_grass",
string = "farming:string",
stick = "default:stick",
flint = "default:flint",
iron_ingot = "default:steel_ingot",
iron_block = "default:steelblock",
fire = "fire:basic_flame",
gunpowder = "tnt:gunpowder",
flint_and_steel = "fire:flint_and_steel",
water_source = "default:water_source",
river_water_source = "default:river_water_source",
black_dye = "dye:black",
poppy = "flowers:rose",
dandelion = "flowers:dandelion_yellow",
coal = "default:coal_lump",
emerald = "default:diamond",
iron_axe = "default:axe_steel",
gold_sword = "default:sword_mese",
gold_ingot = "default:gold_ingot",
gold_nugget = "default:gold_lump",
glowstone_dust = "default:mese_crystal_fragment",
redstone = "default:mese_crystal_fragment",
glass_bottle = "vessels:glass_bottle",
sugar = "default:papyrus",
wheat = "farming:wheat",
hay_bale = "farming:straw",
prismarine_shard = "default:mese_crystal_fragment",
prismarine_crystals = "default:mese_crystal",
apple = "default:apple",
golden_apple = "default:apple",
rabbit_foot = "mobs_mc:rabbit_foot",
-- Boss items
wet_sponge = "default:gold_block", -- only dropped by elder guardian; there is no equivalent block in Minetest Game
-- Other
nether_brick_block = "nether:brick",
mycelium = "ethereal:mushroom_dirt",
carrot = "farming:carrot",
potato = "farming:potato",
golden_carrot = "farming:carrot_gold",
fishing_rod = "fishing:pole_wood",
fish_raw = "fishing:fish_raw",
salmon_raw = "fishing:carp_raw",
clownfish_raw = "fishing:clownfish_raw",
pufferfish_raw = "fishing:pike_raw",
cookie = "farming:cookie",
-- TODO: Add actual ender pearl
ender_pearl = "farorb:farorb",
nether_portal = "nether:portal",
netherrack = "nether:rack",
nether_brick_block = "nether:brick",
-- Wool (Minecraft color scheme)
wool_white = "wool:white",
wool_light_grey = "wool:grey",
wool_grey = "wool:dark_grey",
wool_blue = "wool:blue",
wool_lime = "wool:green",
wool_green = "wool:dark_green",
wool_purple = "wool:violet",
wool_pink = "wool:pink",
wool_yellow = "wool:yellow",
wool_orange = "wool:orange",
wool_brown = "wool:brown",
wool_red = "wool:red",
wool_cyan = "wool:cyan",
wool_magenta = "wool:magenta",
wool_black = "wool:black",
-- Light blue intentionally missing
-- Special items
music_discs = {}, -- No music discs by default; used by creeper. Override this if your game has music discs.
}
-- Tables for attracting, feeding and breeding mobs
mobs_mc.follow = {
sheep = { mobs_mc.items.wheat },
cow = { mobs_mc.items.wheat },
chicken = { "farming:seed_wheat", "farming:seed_cotton" }, -- seeds in general
parrot = { "farming:seed_wheat", "farming:seed_cotton" }, -- seeds in general
horse = { mobs_mc.items.apple, mobs_mc.items.sugar, mobs_mc.items.wheat, mobs_mc.items.hay_bale, mobs_mc.items.golden_apple, mobs_mc.items.golden_carrot },
llama = { mobs_mc.items.wheat, mobs_mc.items.hay_bale, },
pig = { mobs_mc.items.potato, mobs_mc.items.carrot, mobs_mc.items.carrot_on_a_stick,
mobs_mc.items.apple, -- Minetest Game extra
},
rabbit = { mobs_mc.items.dandelion, mobs_mc.items.carrot, mobs_mc.items.golden_carrot, "farming_plus:carrot_item", },
ocelot = { mobs_mc.items.fish_raw, mobs_mc.items.salmon_raw, mobs_mc.items.clownfish_raw, mobs_mc.items.pufferfish_raw,
mobs_mc.items.chicken_raw, -- Minetest Game extra
},
wolf = { mobs_mc.items.bone },
dog = { mobs_mc.items.rabbit_raw, mobs_mc.items.rabbit_cooked, mobs_mc.items.mutton_raw, mobs_mc.items.mutton_cooked, mobs_mc.items.beef_raw, mobs_mc.items.beef_cooked, mobs_mc.items.chicken_raw, mobs_mc.items.chicken_cooked, mobs_mc.items.rotten_flesh,
-- Mobs Redo items
"mobs:meat", "mobs:meat_raw" },
villager = { "mcl_farming:bread", "mcl_farming:carrot_item", "mcl_farming:beetroot_item" , "mcl_farming:potato_item" },
}
-- Contents for replace_what
mobs_mc.replace = {
-- Rabbits reduce carrot growth stage by 1
rabbit = {
-- Farming Redo carrots
{"farming:carrot_8", "farming:carrot_7", 0},
{"farming:carrot_7", "farming:carrot_6", 0},
{"farming:carrot_6", "farming:carrot_5", 0},
{"farming:carrot_5", "farming:carrot_4", 0},
{"farming:carrot_4", "farming:carrot_3", 0},
{"farming:carrot_3", "farming:carrot_2", 0},
{"farming:carrot_2", "farming:carrot_1", 0},
{"farming:carrot_1", "air", 0},
-- Farming Plus carrots
{"farming_plus:carrot", "farming_plus:carrot_7", 0},
{"farming_plus:carrot_6", "farming_plus:carrot_5", 0},
{"farming_plus:carrot_5", "farming_plus:carrot_4", 0},
{"farming_plus:carrot_4", "farming_plus:carrot_3", 0},
{"farming_plus:carrot_3", "farming_plus:carrot_2", 0},
{"farming_plus:carrot_2", "farming_plus:carrot_1", 0},
{"farming_plus:carrot_1", "air", 0},
},
-- Sheep eat grass
sheep = {
-- Grass Block
{ "default:dirt_with_grass", "default:dirt", -1 },
-- “Tall Grass”
{ "default:grass_5", "air", 0 },
{ "default:grass_4", "air", 0 },
{ "default:grass_3", "air", 0 },
{ "default:grass_2", "air", 0 },
{ "default:grass_1", "air", 0 },
},
-- Silverfish populate stone, etc. with monster eggs
silverfish = {
{"default:stone", "mobs_mc:monster_egg_stone", -1},
{"default:cobble", "mobs_mc:monster_egg_cobble", -1},
{"default:mossycobble", "mobs_mc:monster_egg_mossycobble", -1},
{"default:stonebrick", "mobs_mc:monster_egg_stonebrick", -1},
{"default:stone_block", "mobs_mc:monster_egg_stone_block", -1},
},
}
-- List of nodes on which mobs can spawn
mobs_mc.spawn = {
solid = { "group:cracky", "group:crumbly", "group:shovely", "group:pickaxey" }, -- spawn on "solid" nodes (this is mostly just guessing)
grassland = { mobs_mc.items.grass_block, "ethereal:prairie_dirt" },
savanna = { "default:dirt_with_dry_grass" },
grassland_savanna = { mobs_mc.items.grass_block, "default:dirt_with_dry_grass" },
desert = { "default:desert_sand", "group:sand" },
jungle = { "default:dirt_with_rainforest_litter", "default:jungleleaves", "default:junglewood", "mcl_core:jungleleaves", "mcl_core:junglewood" },
snow = { "default:snow", "default:snowblock", "default:dirt_with_snow" },
end_city = { "default:sandstonebrick", "mcl_end:purpur_block", "mcl_end:end_stone" },
wolf = { mobs_mc.items.grass_block, "default:dirt_with_rainforest_litter", "default:dirt", "default:dirt_with_snow", "default:snow", "default:snowblock" },
village = { "mg_villages:road" },
-- These probably don't need overrides
mushroom_island = { mobs_mc.items.mycelium, "mcl_core:mycelium" },
nether_fortress = { mobs_mc.items.nether_brick_block, "mcl_nether:nether_brick", },
nether = { mobs_mc.items.netherrack, "mcl_nether:netherrack", },
nether_portal = { mobs_mc.items.nether_portal, "mcl_portals:portal" },
water = { mobs_mc.items.water_source, "mcl_core:water_source", "default:water_source" },
}
-- This table contains important spawn height references for the mob spawn height.
-- Please base your mob spawn height on these numbers to keep things clean.
mobs_mc.spawn_height = {
water = tonumber(minetest.settings:get("water_level")) or 0, -- Water level in the Overworld
-- Overworld boundaries (inclusive) --I adjusted this to be more reasonable
overworld_min = -64,-- -2999,
overworld_max = 31000,
-- Nether boundaries (inclusive)
nether_min = -29067,-- -3369,
nether_max = -28939,-- -3000,
-- End boundaries (inclusive)
end_min = -6200,
end_max = -6000,
}
mobs_mc.misc = {
shears_wear = 276, -- Wear to add per shears usage (238 uses)
totem_fail_nodes = {} -- List of nodes in which the totem of undying fails
}
-- Item name overrides from mobs_mc_gameconfig (if present)
if minetest.get_modpath("mobs_mc_gameconfig") and mobs_mc.override then
local tables = {"items", "follow", "replace", "spawn", "spawn_height", "misc"}
for t=1, #tables do
local tbl = tables[t]
if mobs_mc.override[tbl] then
for k, v in pairs(mobs_mc.override[tbl]) do
mobs_mc[tbl][k] = v
end
end
end
end

View file

@ -1,587 +0,0 @@
--MCmobs v0.5
--maikerumine
--made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes
--THIS IS THE MASTER ITEM LIST TO USE WITH DEFAULT
-- NOTE: Most strings intentionally not marked for translation, other mods already have these items.
-- TODO: Remove this file eventually, most items are already outsourced in other mods.
local S = minetest.get_translator(minetest.get_current_modname())
local c = mobs_mc.is_item_variable_overridden
-- Blaze
if c("blaze_rod") then
minetest.register_craftitem("mobs_mc:blaze_rod", {
description = "Blaze Rod",
_doc_items_longdesc = "This is a crafting component dropped from dead blazes.",
wield_image = "mcl_mobitems_blaze_rod.png",
inventory_image = "mcl_mobitems_blaze_rod.png",
})
-- Make blaze rod furnace-burnable. 1.5 times the burn time of a coal lump
local coalcraft, burntime
if minetest.get_modpath("default") then
coalcraft = minetest.get_craft_result({method="fuel", width=1, items={"default:coal_lump"}})
end
if coalcraft then
burntime = math.floor(coalcraft.time * 1.5)
end
if burntime == nil or burntime == 0 then
burntime = 60
end
minetest.register_craft({
type = "fuel",
burntime = burntime,
recipe = "mobs_mc:blaze_rod",
})
end
if c("blaze_powder") then
minetest.register_craftitem("mobs_mc:blaze_powder", {
description = "Blaze Powder",
_doc_items_longdesc = "This item is mainly used for brewing potions and crafting.",
wield_image = "mcl_mobitems_blaze_powder.png",
inventory_image = "mcl_mobitems_blaze_powder.png",
})
end
if c("blaze_rod") and c("blaze_powder") then
minetest.register_craft({
output = "mobs_mc:blaze_powder 2",
recipe = {{ "mobs_mc:blaze_rod" }},
})
end
-- Chicken
if c("chicken_raw") then
minetest.register_craftitem("mobs_mc:chicken_raw", {
description = "Raw Chicken",
_doc_items_longdesc = "Raw chicken is a food item and can be eaten safely. Cooking it will increase its nutritional value.",
inventory_image = "mcl_mobitems_chicken_raw.png",
groups = { food = 2, eatable = 2 },
on_use = minetest.item_eat(2),
})
end
if c("chicken_cooked") then
minetest.register_craftitem("mobs_mc:chicken_cooked", {
description = "Cooked Chicken",
_doc_items_longdesc = "A cooked chicken is a healthy food item which can be eaten.",
inventory_image = "mcl_mobitems_chicken_cooked.png",
groups = { food = 2, eatable = 6 },
on_use = minetest.item_eat(6),
})
end
if c("chicken_raw") and c("chicken_cooked") then
minetest.register_craft({
type = "cooking",
output = "mobs_mc:chicken_cooked",
recipe = "mobs_mc:chicken_raw",
cooktime = 5,
})
end
if c("feather") then
minetest.register_craftitem("mobs_mc:feather", {
description = "Feather",
_doc_items_longdesc = "Feathers are used in crafting and are dropped from chickens.",
inventory_image = "mcl_mobitems_feather.png",
})
end
-- Cow and mooshroom
if c("beef_raw") then
minetest.register_craftitem("mobs_mc:beef_raw", {
description = "Raw Beef",
_doc_items_longdesc = "Raw beef is the flesh from cows and can be eaten safely. Cooking it will greatly increase its nutritional value.",
inventory_image = "mcl_mobitems_beef_raw.png",
groups = { food = 2, eatable = 3 },
on_use = minetest.item_eat(3),
})
end
if c("beef_cooked") then
minetest.register_craftitem("mobs_mc:beef_cooked", {
description = "Steak",
_doc_items_longdesc = "Steak is cooked beef from cows and can be eaten.",
inventory_image = "mcl_mobitems_beef_cooked.png",
groups = { food = 2, eatable = 8 },
on_use = minetest.item_eat(8),
})
end
if c("beef_raw") and c("beef_cooked") then
minetest.register_craft({
type = "cooking",
output = "mobs_mc:beef_cooked",
recipe = "mobs_mc:beef_raw",
cooktime = 5,
})
end
if c("milk") then
-- milk
minetest.register_craftitem("mobs_mc:milk_bucket", {
description = "Milk",
_doc_items_longdesc = "Milk is a food item obtained by using a bucket on a cow.",
inventory_image = "mobs_bucket_milk.png",
groups = { food = 3, eatable = 1 },
on_use = minetest.item_eat(1, "bucket:bucket_empty"),
stack_max = 1,
})
end
if c("bowl") then
minetest.register_craftitem("mobs_mc:bowl", {
description = "Bowl",
_doc_items_longdesc = "Bowls are mainly used to hold tasty soups.",
inventory_image = "mcl_core_bowl.png",
})
minetest.register_craft({
output = "mobs_mc:bowl",
recipe = {
{ "group:wood", "", "group:wood" },
{ "", "group:wood", "", },
}
})
minetest.register_craft({
type = "fuel",
recipe = "mobs_mc:bowl",
burntime = 5,
})
end
if c("mushroom_stew") then
minetest.register_craftitem("mobs_mc:mushroom_stew", {
description = "Mushroom Stew",
_doc_items_longdesc = "Mushroom stew is a healthy soup.",
inventory_image = "farming_mushroom_stew.png",
groups = { food = 3, eatable = 6 },
on_use = minetest.item_eat(6, "mobs_mc:bowl"),
stack_max = 1,
})
end
-- Ender dragon
if c("dragon_egg") then
local dragon_egg_sounds
if minetest.get_modpath("default") then
dragon_egg_sounds = default.node_sound_stone_defaults()
end
--ender dragon
minetest.register_node("mobs_mc:dragon_egg", {
description = "Dragon Egg",
tiles = {
"mcl_end_dragon_egg.png",
"mcl_end_dragon_egg.png",
"mcl_end_dragon_egg.png",
"mcl_end_dragon_egg.png",
"mcl_end_dragon_egg.png",
"mcl_end_dragon_egg.png",
},
drawtype = "nodebox",
is_ground_content = false,
paramtype = "light",
light_source = 1,
node_box = {
type = "fixed",
fixed = {
{-0.375, -0.5, -0.375, 0.375, -0.4375, 0.375},
{-0.5, -0.4375, -0.5, 0.5, -0.1875, 0.5},
{-0.4375, -0.1875, -0.4375, 0.4375, 0, 0.4375},
{-0.375, 0, -0.375, 0.375, 0.125, 0.375},
{-0.3125, 0.125, -0.3125, 0.3125, 0.25, 0.3125},
{-0.25, 0.25, -0.25, 0.25, 0.3125, 0.25},
{-0.1875, 0.3125, -0.1875, 0.1875, 0.375, 0.1875},
{-0.125, 0.375, -0.125, 0.125, 0.4375, 0.125},
{-0.0625, 0.4375, -0.0625, 0.0625, 0.5, 0.0625},
}
},
selection_box = {
type = "regular",
},
groups = {snappy = 1, falling_node = 1, deco_block = 1, not_in_creative_inventory = 1, dig_by_piston = 1 },
sounds = dragon_egg_sounds,
-- TODO: Make dragon egg teleport on punching
})
end
local longdesc_craftitem
if minetest.get_modpath("doc_items") then
longdesc_craftitem = doc.sub.items.temp.craftitem
end
-- Enderman
if c("ender_eye") then
minetest.register_craftitem("mobs_mc:ender_eye", {
description = "Eye of Ender",
_doc_items_longdesc = longdesc_craftitem,
inventory_image = "mcl_end_ender_eye.png",
groups = { craftitem = 1 },
})
end
if c("ender_eye") and c("blaze_powder") and c("blaze_rod") then
minetest.register_craft({
type = "shapeless",
output = "mobs_mc:ender_eye",
recipe = { "mobs_mc:blaze_powder", "mobs_mc:blaze_rod"},
})
end
-- Ghast
if c("ghast_tear") then
minetest.register_craftitem("mobs_mc:ghast_tear", {
description = "Ghast Tear",
_doc_items_longdesc = "A ghast tear is an item used in potion brewing. It is dropped from dead ghasts.",
wield_image = "mcl_mobitems_ghast_tear.png",
inventory_image = "mcl_mobitems_ghast_tear.png",
groups = { brewitem = 1 },
})
end
-- Saddle
if c("saddle") then
-- Overwrite the saddle from Mobs Redo
minetest.register_craftitem(":mobs:saddle", {
description = "Saddle",
_doc_items_longdesc = "Saddles can be put on horses, donkeys, mules and pigs in order to mount them.",
_doc_items_usagehelp = "Rightclick an animal while holding a saddle to put on the saddle. You can now mount the animal by rightclicking it again.",
inventory_image = "mcl_mobitems_saddle.png",
stack_max = 1,
})
end
-- Horse Armor
local horse_armor_use = S("Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.")
-- TODO: Balance the horse armor strength, compare with MC armor strength
if c("iron_horse_armor") then
minetest.register_craftitem("mobs_mc:iron_horse_armor", {
description = S("Iron Horse Armor"),
_doc_items_longdesc = S("Iron horse armor can be worn by horses to increase their protection from harm a bit."),
_doc_items_usagehelp = horse_armor_use,
inventory_image = "mobs_mc_iron_horse_armor.png",
_horse_overlay_image = "mobs_mc_horse_armor_iron.png",
sounds = {
_mcl_armor_equip = "mcl_armor_equip_iron",
},
stack_max = 1,
groups = { horse_armor = 85 },
})
end
if c("gold_horse_armor") then
minetest.register_craftitem("mobs_mc:gold_horse_armor", {
description = S("Golden Horse Armor"),
_doc_items_longdesc = S("Golden horse armor can be worn by horses to increase their protection from harm."),
_doc_items_usagehelp = horse_armor_use,
inventory_image = "mobs_mc_gold_horse_armor.png",
_horse_overlay_image = "mobs_mc_horse_armor_gold.png",
sounds = {
_mcl_armor_equip = "mcl_armor_equip_iron",
},
stack_max = 1,
groups = { horse_armor = 60 },
})
end
if c("diamond_horse_armor") then
minetest.register_craftitem("mobs_mc:diamond_horse_armor", {
description = S("Diamond Horse Armor"),
_doc_items_longdesc = S("Diamond horse armor can be worn by horses to greatly increase their protection from harm."),
_doc_items_usagehelp = horse_armor_use,
inventory_image = "mobs_mc_diamond_horse_armor.png",
_horse_overlay_image = "mobs_mc_horse_armor_diamond.png",
sounds = {
_mcl_armor_equip = "mcl_armor_equip_diamond",
},
stack_max = 1,
groups = { horse_armor = 45 },
})
end
-- Pig
if c("porkchop_raw") then
minetest.register_craftitem("mobs_mc:porkchop_raw", {
description = "Raw Porkchop",
_doc_items_longdesc = "A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it will greatly increase its nutritional value.",
inventory_image = "mcl_mobitems_porkchop_raw.png",
groups = { food = 2, eatable = 3 },
on_use = minetest.item_eat(3),
})
end
if c("porkchop_cooked") then
minetest.register_craftitem("mobs_mc:porkchop_cooked", {
description = "Cooked Porkchop",
_doc_items_longdesc = "Cooked porkchop is the cooked flesh of a pig and is used as food.",
inventory_image = "mcl_mobitems_porkchop_cooked.png",
groups = { food = 2, eatable = 8 },
on_use = minetest.item_eat(8),
})
end
if c("porkchop_raw") and c("porkchop_cooked") then
minetest.register_craft({
type = "cooking",
output = "mobs_mc:porkchop_cooked",
recipe = "mobs_mc:porkchop_raw",
cooktime = 5,
})
end
if c("carrot_on_a_stick") then
minetest.register_tool("mobs_mc:carrot_on_a_stick", {
description = "Carrot on a Stick",
_doc_items_longdesc = "A carrot on a stick can be used on saddled pigs to ride them. Pigs will also follow anyone who holds a carrot on a stick near them.",
_doc_items_usagehelp = "Rightclick a saddled pig with the carrot on a stick to mount it. You can now ride it like a horse.",
wield_image = "mcl_mobitems_carrot_on_a_stick.png",
inventory_image = "mcl_mobitems_carrot_on_a_stick.png",
sounds = { breaks = "default_tool_breaks" },
})
end
-- Poor-man's recipes for carrot on a stick
if c("carrot_on_a_stick") and c("stick") and c("string") and minetest.get_modpath("farming") then
minetest.register_craft({
output = "mobs_mc:carrot_on_a_stick",
recipe = {
{"", "", "farming:string" },
{"", "group:stick", "farming:string" },
{"group:stick", "", "farming:bread" },
}
})
-- FIXME: Identify correct farming mod (check if it includes the carrot item)
minetest.register_craft({
output = "mobs_mc:carrot_on_a_stick",
recipe = {
{"", "", "farming:string" },
{"", "group:stick", "farming:string" },
{"group:stick", "", "farming:carrot" },
}
})
end
if c("carrot_on_a_stick") and c("stick") and c("string") and minetest.get_modpath("fishing") and minetest.get_modpath("farming") then
minetest.register_craft({
type = "shapeless",
output = "mobs_mc:carrot_on_a_stick",
recipe = {"fishing:pole_wood", "farming:carrot"},
})
end
-- Rabbit
if c("rabbit_raw") then
minetest.register_craftitem("mobs_mc:rabbit_raw", {
description = "Raw Rabbit",
_doc_items_longdesc = "Raw rabbit is a food item from a dead rabbit. It can be eaten safely. Cooking it will increase its nutritional value.",
inventory_image = "mcl_mobitems_rabbit_raw.png",
groups = { food = 2, eatable = 3 },
on_use = minetest.item_eat(3),
})
end
if c("rabbit_cooked") then
minetest.register_craftitem("mobs_mc:rabbit_cooked", {
description = "Cooked Rabbit",
_doc_items_longdesc = "This is a food item which can be eaten.",
inventory_image = "mcl_mobitems_rabbit_cooked.png",
groups = { food = 2, eatable = 5 },
on_use = minetest.item_eat(5),
})
end
if c("rabbit_raw") and c("rabbit_cooked") then
minetest.register_craft({
type = "cooking",
output = "mobs_mc:rabbit_cooked",
recipe = "mobs_mc:rabbit_raw",
cooktime = 5,
})
end
if c("rabbit_hide") then
minetest.register_craftitem("mobs_mc:rabbit_hide", {
description = "Rabbit Hide",
_doc_items_longdesc = "Rabbit hide is used to create leather.",
inventory_image = "mcl_mobitems_rabbit_hide.png"
})
end
if c("leather") and c("rabbit_hide") then
minetest.register_craft({
output = "mobs:leather",
recipe = {
{ "mobs_mc:rabbit_hide", "mobs_mc:rabbit_hide" },
{ "mobs_mc:rabbit_hide", "mobs_mc:rabbit_hide" },
}
})
end
if c("rabbit_foot") then
minetest.register_craftitem("mobs_mc:rabbit_foot", {
description = "Rabbit's Foot",
_doc_items_longdesc = "This item is used in brewing.",
inventory_image = "mcl_mobitems_rabbit_foot.png"
})
end
-- Sheep
if c("mutton_raw") then
minetest.register_craftitem("mobs_mc:mutton_raw", {
description = "Raw Mutton",
_doc_items_longdesc = "Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it will greatly increase its nutritional value.",
inventory_image = "mcl_mobitems_mutton_raw.png",
groups = { food = 2, eatable = 4 },
on_use = minetest.item_eat(4),
})
end
if c("mutton_cooked") then
minetest.register_craftitem("mobs_mc:mutton_cooked", {
description = "Cooked Mutton",
_doc_items_longdesc = "Cooked mutton is the cooked flesh from a sheep and is used as food.",
inventory_image = "mcl_mobitems_mutton_cooked.png",
groups = { food = 2, eatable = 8 },
on_use = minetest.item_eat(8),
})
end
if c("mutton_raw") and c("mutton_cooked") then
minetest.register_craft({
type = "cooking",
output = "mobs_mc:mutton_cooked",
recipe = "mobs_mc:mutton_raw",
cooktime = 5,
})
end
-- Shulker
if c("shulker_shell") then
minetest.register_craftitem("mobs_mc:shulker_shell", {
description = "Shulker Shell",
_doc_items_longdesc = "Shulker shells are used in crafting. They are dropped from dead shulkers.",
inventory_image = "mcl_mobitems_shulker_shell.png",
groups = { craftitem = 1 },
})
end
-- Magma cube
if c("magma_cream") then
minetest.register_craftitem("mobs_mc:magma_cream", {
description = "Magma Cream",
_doc_items_longdesc = "Magma cream is a crafting component.",
wield_image = "mcl_mobitems_magma_cream.png",
inventory_image = "mcl_mobitems_magma_cream.png",
groups = { brewitem = 1 },
})
end
-- Slime
if c("slimeball") then
minetest.register_craftitem("mobs_mc:slimeball", {
description = "Slimeball",
_doc_items_longdesc = "Slimeballs are used in crafting. They are dropped from slimes.",
inventory_image = "mcl_mobitems_slimeball.png"
})
if minetest.get_modpath("mesecons_materials") then
minetest.register_craft({
output = "mesecons_materials:glue",
recipe = {{ "mobs_mc:slimeball" }},
})
end
end
-- Spider
if c("spider_eye") then
minetest.register_craftitem("mobs_mc:spider_eye", {
description = "Spider Eye",
_doc_items_longdesc = "Spider eyes are used mainly in crafting and brewing. Spider eyes can be eaten, but they poison you and reduce your health by 2 hit points.",
inventory_image = "mcl_mobitems_spider_eye.png",
wield_image = "mcl_mobitems_spider_eye.png",
-- Simplified poisonous food
groups = { food = 2, eatable = -2 },
on_use = minetest.item_eat(-2),
})
end
-- Evoker
if c("totem") then
-- Totem of Undying
minetest.register_craftitem("mobs_mc:totem", {
description = S("Totem of Undying"),
_tt_help = minetest.colorize(mcl_colors.GREEN, S("Protects you from death while wielding it")),
_doc_items_longdesc = S("A totem of undying is a rare artifact which may safe you from certain death."),
_doc_items_usagehelp = S("The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however."),
inventory_image = "mcl_totems_totem.png",
wield_image = "mcl_totems_totem.png",
stack_max = 1,
groups = {combat_item = 1, offhand_item = 1},
})
end
-- Rotten flesh
if c("rotten_flesh") then
minetest.register_craftitem("mobs_mc:rotten_flesh", {
description = "Rotten Flesh",
_doc_items_longdesc = "Yuck! This piece of flesh clearly has seen better days. Eating it will only poison you and reduces your health by 4 hit points. But tamed wolves can eat it just fine.",
inventory_image = "mcl_mobitems_rotten_flesh.png",
-- Simplified poisonous food
groups = { food = 2, eatable = -4 },
on_use = minetest.item_eat(-4),
})
end
-- Misc.
if c("nether_star") then
minetest.register_craftitem("mobs_mc:nether_star", {
description = "Nether Star",
_doc_items_longdesc = "A nether star is a crafting component. It is dropped from the Wither.",
inventory_image = "mcl_mobitems_nether_star.png"
})
end
if c("snowball") and minetest.get_modpath("default") then
minetest.register_craft({
output = "mobs_mc:snowball 2",
recipe = {
{"default:snow"},
},
})
minetest.register_craft({
output = "default:snow 2",
recipe = {
{"mobs_mc:snowball", "mobs_mc:snowball"},
{"mobs_mc:snowball", "mobs_mc:snowball"},
},
})
-- Change the appearance of default snow to avoid confusion with snowball
minetest.override_item("default:snow", {
inventory_image = "",
wield_image = "",
})
end
if c("bone") then
minetest.register_craftitem("mobs_mc:bone", {
description = "Bone",
_doc_items_longdesc = "Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient.",
_doc_items_usagehelp = "Hold the bone in your hand near wolves to attract them. Rightclick the wolf to give it a bone and tame it.",
inventory_image = "mcl_mobitems_bone.png"
})
if minetest.get_modpath("bones") then
minetest.register_craft({
output = "mobs_mc:bone 3",
recipe = {{ "bones:bones" }},
})
end
end

View file

@ -1,402 +0,0 @@
--MCmobs v0.5
--maikerumine
--made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes
-- NOTE: Strings intentionally not marked for translation, other mods already have these items.
-- TODO: Remove this file eventually, all items here are already outsourced in other mods.
local S = minetest.get_translator("mobs_mc")
--maikerumines throwing code
--arrow (weapon)
local c = mobs_mc.is_item_variable_overridden
minetest.register_node("mobs_mc:arrow_box", {
drawtype = "nodebox",
is_ground_content = false,
node_box = {
type = "fixed",
fixed = {
-- Shaft
{-6.5/17, -1.5/17, -1.5/17, -4.5/17, 1.5/17, 1.5/17},
{-4.5/17, -0.5/17, -0.5/17, 5.5/17, 0.5/17, 0.5/17},
{5.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17},
-- Tip
{-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17},
{-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17},
-- Fletching
{6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17},
{7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17},
{7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17},
{6.5/17, -1.5/17, -1.5/17, 7.5/17, -2.5/17, -2.5/17},
{7.5/17, 2.5/17, 2.5/17, 8.5/17, 3.5/17, 3.5/17},
{8.5/17, -3.5/17, 3.5/17, 7.5/17, -2.5/17, 2.5/17},
{8.5/17, 3.5/17, -3.5/17, 7.5/17, 2.5/17, -2.5/17},
{7.5/17, -2.5/17, -2.5/17, 8.5/17, -3.5/17, -3.5/17},
}
},
tiles = {"mcl_bows_arrow.png^[transformFX", "mcl_bows_arrow.png^[transformFX", "mcl_bows_arrow_back.png", "mcl_bows_arrow_front.png", "mcl_bows_arrow.png", "mcl_bows_arrow.png^[transformFX"},
use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false,
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
groups = {not_in_creative_inventory=1, dig_immediate=3},
node_placement_prediction = "",
on_construct = function(pos)
minetest.log("error", "[mobs_mc] Trying to construct mobs_mc:arrow_box at "..minetest.pos_to_string(pos))
minetest.remove_node(pos)
end,
drop = "",
})
local THROWING_ARROW_ENTITY={
physical = false,
timer=0,
visual = "wielditem",
visual_size = {x=0.1, y=0.1},
textures = {"mobs_mc:arrow_box"},
velocity = 10,
lastpos={},
collisionbox = {0,0,0,0,0,0},
}
--ARROW CODE
THROWING_ARROW_ENTITY.on_step = function(self, dtime)
self.timer=self.timer+dtime
local pos = self.object:get_pos()
local node = minetest.get_node(pos)
minetest.add_particle({
pos = pos,
velocity = {x=0, y=0, z=0},
acceleration = {x=0, y=0, z=0},
expirationtime = .3,
size = 1,
collisiondetection = false,
vertical = false,
texture = "mobs_mc_arrow_particle.png",
})
if self.timer>0.2 then
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 1.5)
for k, obj in pairs(objs) do
if obj:get_luaentity() ~= nil then
if obj:get_luaentity().name ~= "mobs_mc:arrow_entity" and obj:get_luaentity().name ~= "__builtin:item" then
local damage = 3
minetest.sound_play("damage", {pos = pos}, true)
obj:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups={fleshy=damage},
}, nil)
self.object:remove()
end
else
local damage = 3
minetest.sound_play("damage", {pos = pos}, true)
obj:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups={fleshy=damage},
}, nil)
self.object:remove()
end
end
end
if self.lastpos.x~=nil then
if node.name ~= "air" then
minetest.sound_play("bowhit1", {pos = pos}, true)
minetest.add_item(self.lastpos, 'mobs_mc:arrow')
self.object:remove()
end
end
self.lastpos={x=pos.x, y=pos.y, z=pos.z}
end
minetest.register_entity("mobs_mc:arrow_entity", THROWING_ARROW_ENTITY)
local arrows = {
{"mobs_mc:arrow", "mobs_mc:arrow_entity" },
}
local throwing_shoot_arrow = function(itemstack, player)
for _,arrow in pairs(arrows) do
if player:get_inventory():get_stack("main", player:get_wield_index()+1):get_name() == arrow[1] then
if not minetest.is_creative_enabled(player:get_player_name()) then
player:get_inventory():remove_item("main", arrow[1])
end
local playerpos = player:get_pos()
local obj = minetest.add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, arrow[2]) --mc
local dir = player:get_look_dir()
obj:set_velocity({x=dir.x*22, y=dir.y*22, z=dir.z*22})
obj:set_acceleration({x=dir.x*-3, y=-10, z=dir.z*-3})
obj:set_yaw(player:get_look_yaw()+math.pi)
minetest.sound_play("throwing_sound", {pos=playerpos}, true)
if obj:get_luaentity().player == "" then
obj:get_luaentity().player = player
end
obj:get_luaentity().node = player:get_inventory():get_stack("main", 1):get_name()
return true
end
end
return false
end
if c("arrow") then
minetest.register_craftitem("mobs_mc:arrow", {
description = "Arrow",
_doc_items_longdesc = "Arrows are ammunition for bows.",
_doc_items_usagehelp = "To use arrows as ammunition for a bow, put them in the inventory slot following the bow. Slots are counted left to right, top to bottom.",
inventory_image = "mcl_bows_arrow_inv.png",
})
end
if c("arrow") and c("flint") and c("feather") and c("stick") then
minetest.register_craft({
output = 'mobs_mc:arrow 4',
recipe = {
{mobs_mc.items.flint},
{mobs_mc.items.stick},
{mobs_mc.items.feather},
}
})
end
if c("bow") then
minetest.register_tool("mobs_mc:bow_wood", {
description = "Bow",
_doc_items_longdesc = "Bows are ranged weapons to shoot arrows at your foes.",
_doc_items_usagehelp = "To use the bow, you first need to have at least one arrow in slot following the bow. Leftclick to shoot. Each hit deals 3 damage.",
inventory_image = "mcl_bows_bow.png",
on_use = function(itemstack, user, pointed_thing)
if throwing_shoot_arrow(itemstack, user, pointed_thing) then
if not minetest.is_creative_enabled(user:get_player_name()) then
itemstack:add_wear(65535/50)
end
end
return itemstack
end,
})
minetest.register_craft({
output = 'mobs_mc:bow_wood',
recipe = {
{mobs_mc.items.string, mobs_mc.items.stick, ''},
{mobs_mc.items.string, '', mobs_mc.items.stick},
{mobs_mc.items.string, mobs_mc.items.stick, ''},
}
})
end
local how_to_throw = "Hold it in your and and leftclick to throw."
-- egg throwing item
-- egg entity
if c("egg") then
local egg_GRAVITY = 9
local egg_VELOCITY = 19
mcl_mobs:register_arrow("mobs_mc:egg_entity", {
visual = "sprite",
visual_size = {x=.5, y=.5},
textures = {"mobs_chicken_egg.png"},
velocity = egg_VELOCITY,
hit_player = function(self, player)
player:punch(minetest.get_player_by_name(self.playername) or self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {},
}, nil)
end,
hit_mob = function(self, mob)
mob:punch(minetest.get_player_by_name(self.playername) or self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {},
}, nil)
end,
hit_node = function(self, pos, node)
if math.random(1, 10) > 1 then
return
end
pos.y = pos.y + 1
local nod = minetest.get_node_or_nil(pos)
if not nod
or not minetest.registered_nodes[nod.name]
or minetest.registered_nodes[nod.name].walkable == true then
return
end
local mob = minetest.add_entity(pos, "mobs_mc:chicken")
local ent2 = mob:get_luaentity()
mob:set_properties({
visual_size = {
x = ent2.base_size.x / 2,
y = ent2.base_size.y / 2
},
collisionbox = {
ent2.base_colbox[1] / 2,
ent2.base_colbox[2] / 2,
ent2.base_colbox[3] / 2,
ent2.base_colbox[4] / 2,
ent2.base_colbox[5] / 2,
ent2.base_colbox[6] / 2
},
})
ent2.child = true
ent2.tamed = true
ent2.owner = self.playername
end
})
-- shoot egg
local mobs_shoot_egg = function (item, player, pointed_thing)
local playerpos = player:get_pos()
minetest.sound_play("default_place_node_hard", {
pos = playerpos,
gain = 1.0,
max_hear_distance = 5,
}, true)
local obj = minetest.add_entity({
x = playerpos.x,
y = playerpos.y +1.5,
z = playerpos.z
}, "mobs_mc:egg_entity")
local ent = obj:get_luaentity()
local dir = player:get_look_dir()
ent.velocity = egg_VELOCITY -- needed for api internal timing
ent.switch = 1 -- needed so that egg doesn't despawn straight away
obj:set_velocity({
x = dir.x * egg_VELOCITY,
y = dir.y * egg_VELOCITY,
z = dir.z * egg_VELOCITY
})
obj:set_acceleration({
x = dir.x * -3,
y = -egg_GRAVITY,
z = dir.z * -3
})
-- pass player name to egg for chick ownership
local ent2 = obj:get_luaentity()
ent2.playername = player:get_player_name()
if not minetest.is_creative_enabled(player:get_player_name()) then
item:take_item()
end
return item
end
minetest.register_craftitem("mobs_mc:egg", {
description = "Egg",
_doc_items_longdesc = "Eggs can be thrown and break on impact. There is a small chance that 1 or even 4 chicks will pop out",
_doc_items_usagehelp = how_to_throw,
inventory_image = "mobs_chicken_egg.png",
on_use = mobs_shoot_egg,
})
end
-- Snowball
local snowball_GRAVITY = 9
local snowball_VELOCITY = 19
mcl_mobs:register_arrow("mobs_mc:snowball_entity", {
visual = "sprite",
visual_size = {x=.5, y=.5},
textures = {"mcl_throwing_snowball.png"},
velocity = snowball_VELOCITY,
hit_player = function(self, player)
-- FIXME: No knockback
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {},
}, nil)
end,
hit_mob = function(self, mob)
-- Hurt blazes, but not damage to anything else
local dmg = {}
if mob:get_luaentity().name == "mobs_mc:blaze" then
dmg = {fleshy = 3}
end
-- FIXME: No knockback
mob:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = dmg,
}, nil)
end,
})
if c("snowball") then
-- shoot snowball
local mobs_shoot_snowball = function (item, player, pointed_thing)
local playerpos = player:get_pos()
local obj = minetest.add_entity({
x = playerpos.x,
y = playerpos.y +1.5,
z = playerpos.z
}, "mobs_mc:snowball_entity")
local ent = obj:get_luaentity()
local dir = player:get_look_dir()
ent.velocity = snowball_VELOCITY -- needed for api internal timing
ent.switch = 1 -- needed so that egg doesn't despawn straight away
obj:set_velocity({
x = dir.x * snowball_VELOCITY,
y = dir.y * snowball_VELOCITY,
z = dir.z * snowball_VELOCITY
})
obj:set_acceleration({
x = dir.x * -3,
y = -snowball_GRAVITY,
z = dir.z * -3
})
-- pass player name to egg for chick ownership
local ent2 = obj:get_luaentity()
ent2.playername = player:get_player_name()
if not minetest.is_creative_enabled(player:get_player_name()) then
item:take_item()
end
return item
end
-- Snowball
minetest.register_craftitem("mobs_mc:snowball", {
description = "Snowball",
_doc_items_longdesc = "Snowballs can be thrown at your enemies. A snowball deals 3 damage to blazes, but is harmless to anything else.",
_doc_items_usagehelp = how_to_throw,
inventory_image = "mcl_throwing_snowball.png",
on_use = mobs_shoot_snowball,
})
end
--end maikerumine code

View file

@ -1,65 +0,0 @@
local pr = PseudoRandom(os.time()*5)
local offsets = {}
for x=-2, 2 do
for z=-2, 2 do
table.insert(offsets, {x=x, y=0, z=z})
end
end
--[[ Periodically check and teleport mob to owner if not sitting (order ~= "sit") and
the owner is too far away. To be used with do_custom. Note: Optimized for mobs smaller than 1×1×1.
Larger mobs might have space problems after teleportation.
* dist: Minimum required distance from owner to teleport. Default: 12
* teleport_check_interval: Optional. Interval in seconds to check the mob teleportation. Default: 4 ]]
mobs_mc.make_owner_teleport_function = function(dist, teleport_check_interval)
return function(self, dtime)
-- No teleportation if no owner or if sitting
if not self.owner or self.order == "sit" then
return
end
if not teleport_check_interval then
teleport_check_interval = 4
end
if not dist then
dist = 12
end
if self._teleport_timer == nil then
self._teleport_timer = teleport_check_interval
return
end
self._teleport_timer = self._teleport_timer - dtime
if self._teleport_timer <= 0 then
self._teleport_timer = teleport_check_interval
local mob_pos = self.object:get_pos()
local owner = minetest.get_player_by_name(self.owner)
if not owner then
-- No owner found, no teleportation
return
end
local owner_pos = owner:get_pos()
local dist_from_owner = vector.distance(owner_pos, mob_pos)
if dist_from_owner > dist then
-- Check for nodes below air in a 5×1×5 area around the owner position
local check_offsets = table.copy(offsets)
-- Attempt to place mob near player. Must be placed on walkable node below a non-walkable one. Place inside that air node.
while #check_offsets > 0 do
local r = pr:next(1, #check_offsets)
local telepos = vector.add(owner_pos, check_offsets[r])
local telepos_below = {x=telepos.x, y=telepos.y-1, z=telepos.z}
table.remove(check_offsets, r)
-- Long story short, spawn on a platform
local trynode = minetest.registered_nodes[minetest.get_node(telepos).name]
local trybelownode = minetest.registered_nodes[minetest.get_node(telepos_below).name]
if trynode and not trynode.walkable and
trybelownode and trybelownode.walkable then
-- Correct position found! Let's teleport.
self.object:set_pos(telepos)
return
end
end
end
end
end
end

View file

@ -1,62 +0,0 @@
--MC Heads for minetest
--maikerumine
-- NOTE: Strings intentionally not marked for translation, other mods already have these items.
-- TODO: Remove this file eventually, all items here are already outsourced in other mods.
local S = minetest.get_translator("mobs_mc")
-- Heads system
local sounds
if minetest.get_modpath("default") then
sounds = default.node_sound_defaults({
footstep = {name="default_hard_footstep", gain=0.3}
})
end
local function addhead(mobname, desc, longdesc)
if not mobs_mc.is_item_variable_overridden("head_"..mobname) then
return
end
minetest.register_node("mobs_mc:head_"..mobname, {
description = desc,
_doc_items_longdesc = longdesc,
drawtype = "nodebox",
is_ground_content = false,
node_box = {
type = "fixed",
fixed = {
{ -0.25, -0.5, -0.25, 0.25, 0.0, 0.25, },
},
},
groups = { oddly_breakable_by_hand=3, head=1, },
-- The head textures are based off the textures of an actual mob.
-- FIXME: This code assumes 16×16 textures for the mob textures!
tiles = {
-- Note: bottom texture is overlaid over top texture to get rid of possible transparency.
-- This is required for skeleton skull and wither skeleton skull.
"[combine:16x16:-4,4=mobs_mc_"..mobname..".png", -- top
"([combine:16x16:-4,4=mobs_mc_"..mobname..".png)^([combine:16x16:-12,4=mobs_mc_"..mobname..".png)", -- bottom
"[combine:16x16:-12,0=mobs_mc_"..mobname..".png", -- left
"[combine:16x16:4,0=mobs_mc_"..mobname..".png", -- right
"[combine:16x16:-20,0=mobs_mc_"..mobname..".png", -- back
"[combine:16x16:-4,0=mobs_mc_"..mobname..".png", -- front
},
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
walkable = true,
sounds = sounds,
selection_box = {
type = "fixed",
fixed = { -0.25, -0.5, -0.25, 0.25, 0.0, 0.25, },
},
})
end
-- Add heads
addhead("zombie", "Zombie Head", "A zombie head is a small decorative block which resembles the head of a zombie.")
addhead("creeper", "Creeper Head", "A creeper head is a small decorative block which resembles the head of a creeper.")
addhead("skeleton", "Skeleton Skull", "A skeleton skull is a small decorative block which resembles the skull of a skeleton.")
addhead("wither_skeleton", "Wither Skeleton Skull", "A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton.")

View file

@ -1,20 +0,0 @@
local function is_forbidden_node(pos, node)
node = node or minetest.get_node(pos)
return minetest.get_item_group(node.name, "stair") > 0 or minetest.get_item_group(node.name, "slab") > 0 or minetest.get_item_group(node.name, "carpet") > 0
end
function mcl_mobs:spawn_abm_check(pos, node, name)
-- Don't spawn monsters on mycelium
if (node.name == "mcl_core:mycelium" or node.name == "mcl_core:mycelium_snow") and minetest.registered_entities[name].type == "monster" then
return true
--Don't Spawn mobs on stairs, slabs, or carpets
elseif is_forbidden_node(pos, node) or is_forbidden_node(vector.add(pos, vector.new(0, 1, 0))) then
return true
-- Spawn on opaque or liquid nodes
elseif minetest.get_item_group(node.name, "opaque") ~= 0 or minetest.registered_nodes[node.name].liquidtype ~= "none" or node.name == "mcl_core:grass_path" then
return false
end
-- Reject everything else
return true
end

View file

@ -17,11 +17,6 @@ This mod adds mobs which closely resemble the mobs from the game Minecraft, vers
* Code: GNU General Public License, version 3 (see `LICENSE`)
* Media: MIT, CC0, CC BY 3.0 CC BY-SA 4.0, LGPLv2.1, GPLv3. See `LICENSE_media.md` for details
## Useful information for developers
### Game integration
Want to include this mod in your game? Read `gameconfig.md`.
### Links
* [`mobs_mc`](https://github.com/maikerumine/mobs_mc)

View file

@ -1,39 +0,0 @@
--###################
--################### AGENT - seemingly unused
--###################
local S = minetest.get_translator("mobs_mc")
mcl_mobs:register_mob("mobs_mc:agent", {
type = "npc",
spawn_class = "passive",
passive = true,
hp_min = 20,
hp_max = 20,
armor = 100,
collisionbox = {-0.35, -0.01, -0.35, 0.35, 1, 0.35},
visual = "mesh",
mesh = "mobs_mc_agent.b3d",
textures = {
{"mobs_mc_agent.png"},
},
-- TODO: sounds
visual_size = {x=3, y=3},
walk_chance = 0,
walk_velocity = 0.6,
run_velocity = 2,
jump = true,
animation = {
stand_speed = 25,
walk_speed = 25,
run_speed = 50,
stand_start = 20,
stand_end = 60,
walk_start = 0,
walk_end = 20,
run_start = 0,
run_end = 20,
},
})
mcl_mobs:register_egg("mobs_mc:agent", S("Agent"), "mobs_mc_spawn_icon_agent.png", 0)

View file

@ -138,8 +138,8 @@ maxlight,
20,
5000,
2,
mobs_mc.spawn_height.overworld_min,
mobs_mc.spawn_height.water-1)
mcl_vars.mg_overworld_min,
mobs_mc.water_level-1)
-- spawn eggs

View file

@ -41,7 +41,7 @@ mcl_mobs:register_mob("mobs_mc:blaze", {
reach = 2,
pathfinding = 1,
drops = {
{name = mobs_mc.items.blaze_rod,
{name = "mcl_mobitems:blaze_rod",
chance = 1,
min = 0,
max = 1,
@ -141,8 +141,8 @@ minetest.LIGHT_MAX+1,
30,
5000,
3,
mobs_mc.spawn_height.nether_min,
mobs_mc.spawn_height.nether_max)
mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max)
-- Blaze fireball
mcl_mobs:register_arrow("mobs_mc:blaze_fireball", {
@ -181,7 +181,7 @@ mcl_mobs:register_arrow("mobs_mc:blaze_fireball", {
-- Node hit, make fire
hit_node = function(self, pos, node)
if node == "air" then
minetest.set_node(pos, {name = mobs_mc.items.fire})
minetest.set_node(pos, {name = "mcl_fire:fire"})
else
if self._shot_from_dispenser and mod_target and node == "mcl_target:target_off" then
mcl_target.hit(vector.round(pos), 0.4) --4 redstone ticks
@ -193,7 +193,7 @@ mcl_mobs:register_arrow("mobs_mc:blaze_fireball", {
-- Set fire if node is air, or a replacable flammable node (e.g. a plant)
if crashnode.name == "air" or
(cndef and cndef.buildable_to and minetest.get_item_group(crashnode.name, "flammable") >= 1) then
minetest.set_node(crashpos, {name = mobs_mc.items.fire})
minetest.set_node(crashpos, {name = "mcl_fire:fire"})
end
end
end

View file

@ -30,12 +30,12 @@ mcl_mobs:register_mob("mobs_mc:chicken", {
makes_footstep_sound = true,
walk_velocity = 1,
drops = {
{name = mobs_mc.items.chicken_raw,
{name = "mcl_mobitems:chicken",
chance = 1,
min = 1,
max = 1,
looting = "common",},
{name = mobs_mc.items.feather,
{name = "mcl_mobitems:feather",
chance = 1,
min = 0,
max = 2,
@ -64,7 +64,12 @@ mcl_mobs:register_mob("mobs_mc:chicken", {
run_start = 0, run_end = 40,
},
follow = mobs_mc.follow.chicken,
follow = {
"mcl_farming:wheat_seeds",
"mcl_farming:melon_seeds",
"mcl_farming:pumpkin_seeds",
"mcl_farming:beetroot_seeds",
},
view_range = 16,
fear_height = 4,
@ -89,7 +94,7 @@ mcl_mobs:register_mob("mobs_mc:chicken", {
local pos = self.object:get_pos()
minetest.add_item(pos, mobs_mc.items.egg)
minetest.add_item(pos, "mcl_throwing:egg")
minetest.sound_play("mobs_mc_chicken_lay_egg", {
pos = pos,
@ -147,8 +152,8 @@ mcl_mobs:spawn_specific(
minetest.LIGHT_MAX+1,
30, 17000,
3,
mobs_mc.spawn_height.water,
mobs_mc.spawn_height.overworld_max)
mobs_mc.water_level,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:chicken", S("Chicken"), "mobs_mc_spawn_icon_chicken.png", 0)

View file

View file

@ -21,12 +21,12 @@ local cow_def = {
makes_footstep_sound = true,
walk_velocity = 1,
drops = {
{name = mobs_mc.items.beef_raw,
{name = "mcl_mobitems:beef",
chance = 1,
min = 1,
max = 3,
looting = "common",},
{name = mobs_mc.items.leather,
{name = "mcl_mobitems:leather",
chance = 1,
min = 0,
max = 2,
@ -47,7 +47,6 @@ local cow_def = {
walk_end = 40, run_start = 0,
run_end = 40,
},
follow = mobs_mc.follow.cow,
on_rightclick = function(self, clicker)
if mcl_mobs:feed_tame(self, clicker, 1, true, true) then return end
if mcl_mobs:protect(self, clicker) then return end
@ -57,23 +56,23 @@ local cow_def = {
end
local item = clicker:get_wielded_item()
if item:get_name() == mobs_mc.items.bucket and clicker:get_inventory() then
if item:get_name() == "mcl_buckets:bucket_empty" and clicker:get_inventory() then
local inv = clicker:get_inventory()
inv:remove_item("main", mobs_mc.items.bucket)
inv:remove_item("main", "mcl_buckets:bucket_empty")
minetest.sound_play("mobs_mc_cow_milk", {pos=self.object:get_pos(), gain=0.6})
-- if room add bucket of milk to inventory, otherwise drop as item
if inv:room_for_item("main", {name=mobs_mc.items.milk}) then
clicker:get_inventory():add_item("main", mobs_mc.items.milk)
if inv:room_for_item("main", {name = "mcl_mobitems:milk_bucket"}) then
clicker:get_inventory():add_item("main", "mcl_mobitems:milk_bucket")
else
local pos = self.object:get_pos()
pos.y = pos.y + 0.5
minetest.add_item(pos, {name = mobs_mc.items.milk})
minetest.add_item(pos, {name = "mcl_mobitems:milk_bucket"})
end
return
end
mcl_mobs:capture_mob(self, clicker, 0, 5, 60, false, nil)
end,
follow = mobs_mc.items.wheat,
follow = "mcl_farming:wheat_item",
view_range = 10,
fear_height = 4,
}
@ -94,14 +93,14 @@ mooshroom_def.on_rightclick = function(self, clicker)
end
local item = clicker:get_wielded_item()
-- Use shears to get mushrooms and turn mooshroom into cow
if item:get_name() == mobs_mc.items.shears then
if item:get_name() == "mcl_tools:shears" then
local pos = self.object:get_pos()
minetest.sound_play("mcl_tools_shears_cut", {pos = pos}, true)
if self.base_texture[1] == "mobs_mc_mooshroom_brown.png" then
minetest.add_item({x=pos.x, y=pos.y+1.4, z=pos.z}, mobs_mc.items.mushroom_brown .. " 5")
minetest.add_item({x=pos.x, y=pos.y+1.4, z=pos.z}, "mcl_mushrooms:mushroom_brown 5")
else
minetest.add_item({x=pos.x, y=pos.y+1.4, z=pos.z}, mobs_mc.items.mushroom_red .. " 5")
minetest.add_item({x=pos.x, y=pos.y+1.4, z=pos.z}, "mcl_mushrooms:mushroom_red 5")
end
local oldyaw = self.object:get_yaw()
@ -110,34 +109,34 @@ mooshroom_def.on_rightclick = function(self, clicker)
cow:set_yaw(oldyaw)
if not minetest.is_creative_enabled(clicker:get_player_name()) then
item:add_wear(mobs_mc.misc.shears_wear)
item:add_wear(mobs_mc.shears_wear)
clicker:get_inventory():set_stack("main", clicker:get_wield_index(), item)
end
-- Use bucket to milk
elseif item:get_name() == mobs_mc.items.bucket and clicker:get_inventory() then
elseif item:get_name() == "mcl_buckets:bucket_empty" and clicker:get_inventory() then
local inv = clicker:get_inventory()
inv:remove_item("main", mobs_mc.items.bucket)
inv:remove_item("main", "mcl_buckets:bucket_empty")
minetest.sound_play("mobs_mc_cow_milk", {pos=self.object:get_pos(), gain=0.6})
-- If room, add milk to inventory, otherwise drop as item
if inv:room_for_item("main", {name=mobs_mc.items.milk}) then
clicker:get_inventory():add_item("main", mobs_mc.items.milk)
if inv:room_for_item("main", {name="mcl_mobitems:milk_bucket"}) then
clicker:get_inventory():add_item("main", "mcl_mobitems:milk_bucket")
else
local pos = self.object:get_pos()
pos.y = pos.y + 0.5
minetest.add_item(pos, {name = mobs_mc.items.milk})
minetest.add_item(pos, {name = "mcl_mobitems:milk_bucket"})
end
-- Use bowl to get mushroom stew
elseif item:get_name() == mobs_mc.items.bowl and clicker:get_inventory() then
elseif item:get_name() == "mcl_core:bowl" and clicker:get_inventory() then
local inv = clicker:get_inventory()
inv:remove_item("main", mobs_mc.items.bowl)
inv:remove_item("main", "mcl_core:bowl")
minetest.sound_play("mobs_mc_cow_mushroom_stew", {pos=self.object:get_pos(), gain=0.6})
-- If room, add mushroom stew to inventory, otherwise drop as item
if inv:room_for_item("main", {name=mobs_mc.items.mushroom_stew}) then
clicker:get_inventory():add_item("main", mobs_mc.items.mushroom_stew)
if inv:room_for_item("main", {name="mcl_mushrooms:mushroom_stew"}) then
clicker:get_inventory():add_item("main", "mcl_mushrooms:mushroom_stew")
else
local pos = self.object:get_pos()
pos.y = pos.y + 0.5
minetest.add_item(pos, {name = mobs_mc.items.mushroom_stew})
minetest.add_item(pos, {name = "mcl_mushrooms:mushroom_stew"})
end
end
mcl_mobs:capture_mob(self, clicker, 0, 5, 60, false, nil)
@ -193,8 +192,8 @@ minetest.LIGHT_MAX+1,
30,
17000,
10,
mobs_mc.spawn_height.water,
mobs_mc.spawn_height.overworld_max)
mobs_mc.water_level,
mcl_vars.mg_overworld_max)
@ -211,8 +210,8 @@ minetest.LIGHT_MAX+1,
30,
17000,
5,
mobs_mc.spawn_height.overworld_min,
mobs_mc.spawn_height.overworld_max)
mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
-- spawn egg
mcl_mobs:register_egg("mobs_mc:cow", S("Cow"), "mobs_mc_spawn_icon_cow.png", 0)

View file

@ -58,7 +58,7 @@ mcl_mobs:register_mob("mobs_mc:creeper", {
return
end
local item = clicker:get_wielded_item()
if item:get_name() == mobs_mc.items.flint_and_steel then
if item:get_name() == "mcl_fire:flint_and_steel" then
if not minetest.is_creative_enabled(clicker:get_player_name()) then
-- Wear tool
local wdef = item:get_definition()
@ -88,14 +88,14 @@ mcl_mobs:register_mob("mobs_mc:creeper", {
if luaentity and luaentity.name:find("arrow") then
local shooter_luaentity = luaentity._shooter and luaentity._shooter:get_luaentity()
if shooter_luaentity and (shooter_luaentity.name == "mobs_mc:skeleton" or shooter_luaentity.name == "mobs_mc:stray") then
minetest.add_item({x=pos.x, y=pos.y+1, z=pos.z}, mobs_mc.items.music_discs[math.random(1, #mobs_mc.items.music_discs)])
minetest.add_item({x=pos.x, y=pos.y+1, z=pos.z}, "mcl_jukebox:record_" .. math.random(9))
end
end
end
end,
maxdrops = 2,
drops = {
{name = mobs_mc.items.gunpowder,
{name = "mcl_mobitems:gunpowder",
chance = 1,
min = 0,
max = 2,
@ -103,7 +103,7 @@ mcl_mobs:register_mob("mobs_mc:creeper", {
-- Head
-- TODO: Only drop if killed by charged creeper
{name = mobs_mc.items.head_creeper,
{name = "mcl_heads:creeper",
chance = 200, -- 0.5%
min = 1,
max = 1,},
@ -180,7 +180,7 @@ mcl_mobs:register_mob("mobs_mc:creeper_charged", {
return
end
local item = clicker:get_wielded_item()
if item:get_name() == mobs_mc.items.flint_and_steel then
if item:get_name() == "mcl_fire:flint_and_steel" then
if not minetest.is_creative_enabled(clicker:get_player_name()) then
-- Wear tool
local wdef = item:get_definition()
@ -210,14 +210,14 @@ mcl_mobs:register_mob("mobs_mc:creeper_charged", {
if luaentity and luaentity.name:find("arrow") then
local shooter_luaentity = luaentity._shooter and luaentity._shooter:get_luaentity()
if shooter_luaentity and (shooter_luaentity.name == "mobs_mc:skeleton" or shooter_luaentity.name == "mobs_mc:stray") then
minetest.add_item({x=pos.x, y=pos.y+1, z=pos.z}, mobs_mc.items.music_discs[math.random(1, #mobs_mc.items.music_discs)])
minetest.add_item({x=pos.x, y=pos.y+1, z=pos.z}, "mcl_jukebox:record_" .. math.random(9))
end
end
end
end,
maxdrops = 2,
drops = {
{name = mobs_mc.items.gunpowder,
{name = "mcl_mobitems:gunpowder",
chance = 1,
min = 0,
max = 2,
@ -225,7 +225,7 @@ mcl_mobs:register_mob("mobs_mc:creeper_charged", {
-- Head
-- TODO: Only drop if killed by charged creeper
{name = mobs_mc.items.head_creeper,
{name = "mcl_heads:creeper",
chance = 200, -- 0.5%
min = 1,
max = 1,},
@ -404,8 +404,8 @@ mcl_mobs:spawn_specific(
20,
16500,
2,
mobs_mc.spawn_height.overworld_min,
mobs_mc.spawn_height.overworld_max)
mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:creeper", S("Creeper"), "mobs_mc_spawn_icon_creeper.png", 0)

View file

@ -98,7 +98,7 @@ mcl_mobs:register_mob("mobs_mc:enderdragon", {
mcl_structures.call_struct(self._portal_pos, "end_exit_portal_open")
if self._initial then
mcl_experience.throw_xp(pos, 11500) -- 500 + 11500 = 12000
minetest.set_node(vector.add(self._portal_pos, vector.new(3, 5, 3)), {name = mobs_mc.items.dragon_egg})
minetest.set_node(vector.add(self._portal_pos, vector.new(3, 5, 3)), {name = "mcl_end:dragon_egg"})
end
end
end,

View file

@ -249,7 +249,7 @@ mcl_mobs:register_mob("mobs_mc:enderman", {
damage = 7,
reach = 2,
drops = {
{name = mobs_mc.items.ender_pearl,
{name = "mcl_throwing:ender_pearl",
chance = 1,
min = 0,
max = 1,
@ -604,8 +604,8 @@ minetest.LIGHT_MAX+1,
30,
3000,
12,
mobs_mc.spawn_height.end_min,
mobs_mc.spawn_height.end_max)
mcl_vars.mg_end_min,
mcl_vars.mg_end_max)
-- Overworld spawn
mcl_mobs:spawn_specific(
"mobs_mc:enderman",
@ -757,8 +757,8 @@ mcl_mobs:spawn_specific(
30,
19000,
2,
mobs_mc.spawn_height.overworld_min,
mobs_mc.spawn_height.overworld_max)
mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
-- Nether spawn (rare)
mcl_mobs:spawn_specific(
@ -773,8 +773,8 @@ mcl_mobs:spawn_specific(
30,
27500,
4,
mobs_mc.spawn_height.nether_min,
mobs_mc.spawn_height.nether_max)
mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:enderman", S("Enderman"), "mobs_mc_spawn_icon_enderman.png", 0)

View file

@ -1,59 +0,0 @@
# Game integration help
This mod has been designed to make game integration rather easy. Ideally, it should be possible to include this mod verbatim in your game, with modifications only done by an external mod.
To integrate this mod in a game, you have to do 2 things: Adding the mod, and adding another mod which tells `mobs_mc` which items to use. The idea is that `mobs_mc` should work with any items. Specifically, these are the steps you need to follow:
* Add the `mobs_mc` mod and its dependencies
* Add a mod with name “`mobs_mc_gameconfig`”
* In this mod, do this:
* Do *not* depend on `mobs_mc`
* Create the table `mobs_mc`
* Create the table `mobs_mc.override`
* In `mobs_mc.override`, create subtables (`items`, `spawn`, etc.) like in `0_gameconfig.lua`, defining the na
* Read `0_gameconfig.lua` to see which items you can override (and more explanations)
* In `on_construct` of a pumpkin or jack'o lantern node, call:
* `mobs_mc.tools.check_iron_golem_summon(pos)`
* `mobs_mc.tools.check_snow_golem_summon(pos)`
* For more information, see `snowman.lua` and `iron_golem.lua`
Some things to note:
* Every override is optional, but explicitly setting all the item overrides is strongly recommended
* `mobs_mc` ships many (but not all) items on its own. If not item name override is set, the `mobs_mc` item is used
* You decide whether your game defines its own items, outside of `mobs_mc` or if you let `mobs_mc` do the work.
* Make sure to avoid duplicate items!
* After finishing this, throughly test this
* Without `mobs_mc_gameconfig`, the mod assumes Minetest Game items
* `mobs_mc` optionally depends on `mobs_mc_gameconfig`
## Example `init.lua` in `mobs_mc_gameconfig`
```
mobs_mc = {}
mobs_mc.override = {}
-- Set the item names here
mobs_mc.override.items = {
blaze_rod = "mcl_mobitems:blaze_rod",
blaze_powder = "mcl_mobitems:blaze_powder",
chicken_raw = "mcl_mobitems:chicken",
-- And so on ...
}
-- Set the “follow” field of mobs (used for attracting mob, feeding and breeding)
mobs_mc.override.follow = {
chicken = { "mcl_farming:wheat_seeds", "mcl_farming:melon_seeds", "mcl_farming:pumpkin_seeds", "mcl_farming:beetroot_seeds", },
horse = { "mcl_core:apple", mobs_mc.override.items.wheat }, -- TODO
pig = { "mcl_farming:potato", mobs_mc.override.items.carrot, mobs_mc.override.items.carrot_on_a_stick},
-- And so on ...
}
-- Custom spawn nodes
mobs_mc.override.spawn = {
snow = { "example:snow", "example:snow2" },
-- And so on ...
}
-- Take a look at the other possible tables, see 0_gameconfig.lua
```

View file

@ -39,8 +39,8 @@ mcl_mobs:register_mob("mobs_mc:ghast", {
walk_velocity = 1.6,
run_velocity = 3.2,
drops = {
{name = mobs_mc.items.gunpowder, chance = 1, min = 0, max = 2, looting = "common"},
{name = mobs_mc.items.ghast_tear, chance = 10/6, min = 0, max = 1, looting = "common", looting_ignore_chance = true},
{name = "mcl_mobitems:gunpowder", chance = 1, min = 0, max = 2, looting = "common"},
{name = "mcl_mobitems:ghast_tear", chance = 10/6, min = 0, max = 1, looting = "common", looting_ignore_chance = true},
},
animation = {
stand_speed = 50, walk_speed = 50, run_speed = 50,
@ -88,8 +88,8 @@ minetest.LIGHT_MAX+1,
30,
18000,
2,
mobs_mc.spawn_height.nether_min,
mobs_mc.spawn_height.nether_max)
mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max)
-- fireball (projectile)
mcl_mobs:register_arrow("mobs_mc:fireball", {

View file

@ -44,7 +44,7 @@ mcl_mobs:register_mob("mobs_mc:guardian", {
},
drops = {
-- Greatly increased amounts of prismarine
{name = mobs_mc.items.prismarine_shard,
{name = "mcl_ocean:prismarine_shard",
chance = 1,
min = 0,
max = 32,
@ -53,37 +53,37 @@ mcl_mobs:register_mob("mobs_mc:guardian", {
-- The following drops are approximations
-- Fish / prismarine crystal
{name = mobs_mc.items.fish_raw,
{name = "mcl_fishing:fish_raw",
chance = 4,
min = 1,
max = 1,
looting = "common",},
{name = mobs_mc.items.prismarine_crystals,
{name = "mcl_ocean:prismarine_crystals",
chance = 4,
min = 1,
max = 2,
looting = "common",},
-- Rare drop: fish
{name = mobs_mc.items.fish_raw,
{name = "mcl_fishing:fish_raw",
chance = 160, -- 2.5% / 4
min = 1,
max = 1,
looting = "rare",
looting_factor = 0.0025,},
{name = mobs_mc.items.salmon_raw,
{name = "mcl_fishing:salmon_raw",
chance = 160,
min = 1,
max = 1,
looting = "rare",
looting_factor = 0.0025,},
{name = mobs_mc.items.clownfish_raw,
{name = "mcl_fishing:clownfish_raw",
chance = 160,
min = 1,
max = 1,
looting = "rare",
looting_factor = 0.0025,},
{name = mobs_mc.items.pufferfish_raw,
{name = "mcl_fishing:pufferfish_raw",
chance = 160,
min = 1,
max = 1,
@ -92,14 +92,14 @@ mcl_mobs:register_mob("mobs_mc:guardian", {
},
fly = true,
makes_footstep_sound = false,
fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source },
fly_in = { "mcl_core:water_source", "mclx_core:river_water_source" },
jump = false,
view_range = 16,
})
-- Spawning disabled due to size issues
-- TODO: Re-enable spawning
--mcl_mobs:spawn_specific("mobs_mc:guardian", mobs_mc.spawn.water, mobs_mc.spawn_water, 0, minetest.LIGHT_MAX+1, 30, 25000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.water - 10)
--mcl_mobs:spawn_specific("mobs_mc:guardian", { "mcl_core:water_source", "mclx_core:river_water_source" }, { "mcl_core:water_source", "mclx_core:river_water_source" }, 0, minetest.LIGHT_MAX+1, 30, 25000, 2, mcl_vars.mg_overworld_min, mobs_mc.water_level - 10)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:guardian", S("Guardian"), "mobs_mc_spawn_icon_guardian.png", 0)

View file

@ -49,51 +49,51 @@ mcl_mobs:register_mob("mobs_mc:guardian_elder", {
-- TODO: Reduce # of drops when ocean monument is ready.
-- Greatly increased amounts of prismarine
{name = mobs_mc.items.prismarine_shard,
{name = "mcl_ocean:prismarine_shard",
chance = 1,
min = 1,
max = 64,
looting = "common",},
-- TODO: Only drop if killed by player
{name = mobs_mc.items.wet_sponge,
{name = "mcl_sponges:sponge_wet",
chance = 1,
min = 1,
max = 1,},
-- The following drops are approximations
-- Fish / prismarine crystal
{name = mobs_mc.items.fish_raw,
{name = "mcl_fishing:fish_raw",
chance = 4,
min = 1,
max = 1,
looting = "common",},
{name = mobs_mc.items.prismarine_crystals,
{name = "mcl_ocean:prismarine_crystals",
chance = 1,
min = 1,
max = 10,
looting = "common",},
-- Rare drop: fish
{name = mobs_mc.items.fish_raw,
{name = "mcl_fishing:fish_raw",
chance = 160, -- 2.5% / 4
min = 1,
max = 1,
looting = "rare",
looting_factor = 0.01 / 4,},
{name = mobs_mc.items.salmon_raw,
{name = "mcl_fishing:salmon_raw",
chance = 160,
min = 1,
max = 1,
looting = "rare",
looting_factor = 0.01 / 4,},
{name = mobs_mc.items.clownfish_raw,
{name = "mcl_fishing:clownfish_raw",
chance = 160,
min = 1,
max = 1,
looting = "rare",
looting_factor = 0.01 / 4,},
{name = mobs_mc.items.pufferfish_raw,
{name = "mcl_fishing:pufferfish_raw",
chance = 160,
min = 1,
max = 1,
@ -102,14 +102,14 @@ mcl_mobs:register_mob("mobs_mc:guardian_elder", {
},
fly = true,
makes_footstep_sound = false,
fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source },
fly_in = { "mcl_core:water_source", "mclx_core:river_water_source" },
jump = false,
view_range = 16,
})
-- Spawning disabled due to size issues <- what do you mean? -j4i
-- TODO: Re-enable spawning
-- mcl_mobs:spawn_specific("mobs_mc:guardian_elder", mobs_mc.spawn.water, mobs_mc.spawn_water, 0, minetest.LIGHT_MAX+1, 30, 40000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.water-18)
-- mcl_mobs:spawn_specific("mobs_mc:guardian_elder", { "mcl_core:water_source", "mclx_core:river_water_source" }, { "mcl_core:water_source", "mclx_core:river_water_source" }, 0, minetest.LIGHT_MAX+1, 30, 40000, 2, mcl_vars.mg_overworld_min, mobs_mc.water_level-18)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:guardian_elder", S("Elder Guardian"), "mobs_mc_spawn_icon_guardian_elder.png", 0)

View file

@ -114,7 +114,14 @@ local horse = {
fly = false,
walk_chance = 60,
view_range = 16,
follow = mobs_mc.follow.horse,
follow = {
"mcl_core:apple",
"mcl_core:sugar",
"mcl_farming:wheat_item",
"mcl_farming:hay_block",
"mcl_core:apple_gold",
"mcl_farming:carrot_item_gold",
},
passive = true,
hp_min = 15,
hp_max = 30,
@ -125,7 +132,7 @@ local horse = {
jump = true,
jump_height = 5.75, -- can clear 2.5 blocks
drops = {
{name = mobs_mc.items.leather,
{name = "mcl_mobitems:leather",
chance = 1,
min = 0,
max = 2,
@ -194,7 +201,7 @@ local horse = {
-- drop saddle when horse is killed while riding
if self._saddle then
minetest.add_item(pos, mobs_mc.items.saddle)
minetest.add_item(pos, "mcl_mobitems:saddle")
end
-- also detach from horse properly
if self.driver then
@ -222,15 +229,15 @@ local horse = {
-- Feeding, intentionally not using mobs:feed_tame because horse taming is
-- different and more complicated
if (iname == mobs_mc.items.sugar) then
if (iname == "mcl_core:sugar") then
temper_increase = 3
elseif (iname == mobs_mc.items.wheat) then
elseif (iname == "mcl_farming:wheat_item") then
temper_increase = 3
elseif (iname == mobs_mc.items.apple) then
elseif (iname == "mcl_core:apple") then
temper_increase = 3
elseif (iname == mobs_mc.items.golden_carrot) then
elseif (iname == "mcl_farming:carrot_item_gold") then
temper_increase = 5
elseif (iname == mobs_mc.items.golden_apple) then
elseif (iname == "mcl_core:apple_gold") then
temper_increase = 10
-- Trying to ride
elseif not self.driver then
@ -258,9 +265,9 @@ local horse = {
if can_breed(self.name) then
-- Breed horse with golden apple or golden carrot
if (iname == mobs_mc.items.golden_apple) then
if (iname == "mcl_core:apple_gold") then
heal = 10
elseif (iname == mobs_mc.items.golden_carrot) then
elseif (iname == "mcl_farming:carrot_item_gold") then
heal = 4
end
if heal > 0 and mcl_mobs:feed_tame(self, clicker, heal, true, false) then
@ -269,13 +276,13 @@ local horse = {
end
-- Feed with anything else
-- TODO heal amounts don't work
if (iname == mobs_mc.items.sugar) then
if (iname == "mcl_core:sugar") then
heal = 1
elseif (iname == mobs_mc.items.wheat) then
elseif (iname == "mcl_farming:wheat_item") then
heal = 2
elseif (iname == mobs_mc.items.apple) then
elseif (iname == "mcl_core:apple") then
heal = 3
elseif (iname == mobs_mc.items.hay_bale) then
elseif (iname == "mcl_farming:hay_block") then
heal = 20
end
if heal > 0 and mcl_mobs:feed_tame(self, clicker, heal, false, false) then
@ -298,7 +305,7 @@ local horse = {
-- Put on saddle if tamed
elseif not self.driver and not self._saddle
and iname == mobs_mc.items.saddle then
and iname == "mcl_mobitems:saddle" then
-- Put on saddle and take saddle from player's inventory
local w = clicker:get_wielded_item()
@ -424,7 +431,7 @@ skeleton_horse.breath_max = -1
skeleton_horse.armor = {undead = 100, fleshy = 100}
skeleton_horse.textures = {{"blank.png", "mobs_mc_horse_skeleton.png", "blank.png"}}
skeleton_horse.drops = {
{name = mobs_mc.items.bone,
{name = "mcl_mobitems:bone",
chance = 1,
min = 0,
max = 2,},
@ -447,7 +454,7 @@ zombie_horse.breath_max = -1
zombie_horse.armor = {undead = 100, fleshy = 100}
zombie_horse.textures = {{"blank.png", "mobs_mc_horse_zombie.png", "blank.png"}}
zombie_horse.drops = {
{name = mobs_mc.items.rotten_flesh,
{name = "mcl_mobitems:rotten_flesh",
chance = 1,
min = 0,
max = 2,},
@ -562,8 +569,8 @@ minetest.LIGHT_MAX+1,
30,
15000,
4,
mobs_mc.spawn_height.water+3,
mobs_mc.spawn_height.overworld_max)
mobs_mc.water_level+3,
mcl_vars.mg_overworld_max)
mcl_mobs:spawn_specific(
@ -583,8 +590,8 @@ minetest.LIGHT_MAX+1,
30,
15000,
4,
mobs_mc.spawn_height.water+3,
mobs_mc.spawn_height.overworld_max)
mobs_mc.water_level+3,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:horse", S("Horse"), "mobs_mc_spawn_icon_horse.png", 0)

View file

@ -2,45 +2,100 @@
--maikerumine
--made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes
mobs_mc = {}
local path = minetest.get_modpath("mobs_mc")
local pr = PseudoRandom(os.time()*5)
if not minetest.get_modpath("mobs_mc_gameconfig") then
mobs_mc = {}
local offsets = {}
for x=-2, 2 do
for z=-2, 2 do
table.insert(offsets, {x=x, y=0, z=z})
end
end
-- For utility functions
mobs_mc.tools = {}
--[[ Periodically check and teleport mob to owner if not sitting (order ~= "sit") and
the owner is too far away. To be used with do_custom. Note: Optimized for mobs smaller than 1×1×1.
Larger mobs might have space problems after teleportation.
-- This function checks if the item ID has been overwritten and returns true if it is unchanged
if minetest.get_modpath("mobs_mc_gameconfig") and mobs_mc.override and mobs_mc.override.items then
mobs_mc.is_item_variable_overridden = function(id)
return mobs_mc.override.items[id] == nil
* dist: Minimum required distance from owner to teleport. Default: 12
* teleport_check_interval: Optional. Interval in seconds to check the mob teleportation. Default: 4 ]]
mobs_mc.make_owner_teleport_function = function(dist, teleport_check_interval)
return function(self, dtime)
-- No teleportation if no owner or if sitting
if not self.owner or self.order == "sit" then
return
end
if not teleport_check_interval then
teleport_check_interval = 4
end
if not dist then
dist = 12
end
if self._teleport_timer == nil then
self._teleport_timer = teleport_check_interval
return
end
self._teleport_timer = self._teleport_timer - dtime
if self._teleport_timer <= 0 then
self._teleport_timer = teleport_check_interval
local mob_pos = self.object:get_pos()
local owner = minetest.get_player_by_name(self.owner)
if not owner then
-- No owner found, no teleportation
return
end
local owner_pos = owner:get_pos()
local dist_from_owner = vector.distance(owner_pos, mob_pos)
if dist_from_owner > dist then
-- Check for nodes below air in a 5×1×5 area around the owner position
local check_offsets = table.copy(offsets)
-- Attempt to place mob near player. Must be placed on walkable node below a non-walkable one. Place inside that air node.
while #check_offsets > 0 do
local r = pr:next(1, #check_offsets)
local telepos = vector.add(owner_pos, check_offsets[r])
local telepos_below = {x=telepos.x, y=telepos.y-1, z=telepos.z}
table.remove(check_offsets, r)
-- Long story short, spawn on a platform
local trynode = minetest.registered_nodes[minetest.get_node(telepos).name]
local trybelownode = minetest.registered_nodes[minetest.get_node(telepos_below).name]
if trynode and not trynode.walkable and
trybelownode and trybelownode.walkable then
-- Correct position found! Let's teleport.
self.object:set_pos(telepos)
return
end
end
end
end
end
else
-- No items are overwritten, so always return true
mobs_mc.is_item_variable_overridden = function(id)
end
local function is_forbidden_node(pos, node)
node = node or minetest.get_node(pos)
return minetest.get_item_group(node.name, "stair") > 0 or minetest.get_item_group(node.name, "slab") > 0 or minetest.get_item_group(node.name, "carpet") > 0
end
function mcl_mobs:spawn_abm_check(pos, node, name)
-- Don't spawn monsters on mycelium
if (node.name == "mcl_core:mycelium" or node.name == "mcl_core:mycelium_snow") and minetest.registered_entities[name].type == "monster" then
return true
--Don't Spawn mobs on stairs, slabs, or carpets
elseif is_forbidden_node(pos, node) or is_forbidden_node(vector.add(pos, vector.new(0, 1, 0))) then
return true
-- Spawn on opaque or liquid nodes
elseif minetest.get_item_group(node.name, "opaque") ~= 0 or minetest.registered_nodes[node.name].liquidtype ~= "none" or node.name == "mcl_core:grass_path" then
return false
end
-- Reject everything else
return true
end
--MOB ITEMS SELECTOR SWITCH
dofile(path .. "/0_gameconfig.lua")
--Items
dofile(path .. "/1_items_default.lua")
-- Bow, arrow and throwables
dofile(path .. "/2_throwing.lua")
-- Shared functions
dofile(path .. "/3_shared.lua")
--Mob heads
dofile(path .. "/4_heads.lua")
dofile(path .. "/5_spawn_abm_check.lua")
mobs_mc.shears_wear = 276
mobs_mc.water_level = tonumber(minetest.settings:get("water_level")) or 0
-- Animals
local path = minetest.get_modpath("mobs_mc")
dofile(path .. "/bat.lua") -- Mesh and animation by toby109tt / https://github.com/22i
dofile(path .. "/rabbit.lua") -- Mesh and animation byExeterDad
dofile(path .. "/chicken.lua") -- Mesh and animation by Pavel_S
@ -57,8 +112,6 @@ dofile(path .. "/squid.lua") -- Animation, sound and egg texture by daufinsyd
-- NPCs
dofile(path .. "/villager.lua") -- KrupnoPavel Mesh and animation by toby109tt / https://github.com/22i
-- Agent texture missing
--dofile(path .. "/agent.lua") -- Mesh and animation by toby109tt / https://github.com/22i
-- Illagers and witch
dofile(path .. "/villager_evoker.lua") -- Mesh and animation by toby109tt / https://github.com/22i
@ -89,12 +142,3 @@ dofile(path .. "/slime+magma_cube.lua") -- Wuzzy
dofile(path .. "/spider.lua") -- Spider by AspireMint (fishyWET (CC-BY-SA 3.0 license for texture)
dofile(path .. "/vex.lua") -- KrupnoPavel
dofile(path .. "/wither.lua") -- Mesh and animation by toby109tt / https://github.com/22i
--NOTES:
--
--[[
COLISIONBOX in minetest press f5 to see where you are looking at then put these wool collor nodes on the ground in direction of north/east/west... to make colisionbox editing easier
#1west-pink/#2down/#3south-blue/#4east-red/#5up/#6north-yelow
{-1, -0.5, -1, 1, 3, 1}, Right, Bottom, Back, Left, Top, Front
--]]
--
--

View file

@ -62,11 +62,11 @@ mcl_mobs:register_mob("mobs_mc:iron_golem", {
return false
end,
drops = {
{name = mobs_mc.items.iron_ingot,
{name = "mcl_core:iron_ingot",
chance = 1,
min = 3,
max = 5,},
{name = mobs_mc.items.poppy,
{name = "mcl_flowers:poppy",
chance = 1,
min = 0,
max = 2,},
@ -107,7 +107,7 @@ I = Iron block
. = Air
]]
mobs_mc.tools.check_iron_golem_summon = function(pos)
function mobs_mc.check_iron_golem_summon(pos)
local checks = {
-- These are the possible placement patterns, with offset from the pumpkin block.
-- These tables include the positions of the iron blocks (1-4) and air blocks (5-8)
@ -165,7 +165,7 @@ mobs_mc.tools.check_iron_golem_summon = function(pos)
for i=1, 4 do
local cpos = vector.add(pos, checks[c][i])
local node = minetest.get_node(cpos)
if node.name ~= mobs_mc.items.iron_block then
if node.name ~= "mcl_core:ironblock" then
ok = false
break
end

View file

@ -51,7 +51,7 @@ mcl_mobs:register_mob("mobs_mc:llama", {
follow_velocity = 4.4,
floats = 1,
drops = {
{name = mobs_mc.items.leather,
{name = "mcl_mobitems:leather",
chance = 1,
min = 0,
max = 2,
@ -82,7 +82,7 @@ mcl_mobs:register_mob("mobs_mc:llama", {
look_start = 78,
look_end = 108,
},
follow = mobs_mc.follow.llama,
follow = { "mcl_farming:wheat_item", "mcl_farming:hay_block" },
view_range = 16,
do_custom = function(self, dtime)
@ -126,7 +126,7 @@ mcl_mobs:register_mob("mobs_mc:llama", {
end
local item = clicker:get_wielded_item()
if item:get_name() == mobs_mc.items.hay_bale then
if item:get_name() == "mcl_farming:hay_block" then
-- Breed with hay bale
if mcl_mobs:feed_tame(self, clicker, 1, true, false) then return end
else
@ -155,7 +155,7 @@ mcl_mobs:register_mob("mobs_mc:llama", {
})
self.carpet = item:get_name()
self.drops = {
{name = mobs_mc.items.leather,
{name = "mcl_mobitems:leather",
chance = 1,
min = 0,
max = 2,},
@ -235,8 +235,8 @@ minetest.LIGHT_MAX+1,
30,
15000,
5,
mobs_mc.spawn_height.water+15,
mobs_mc.spawn_height.overworld_max)
mobs_mc.water_level+15,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:llama", S("Llama"), "mobs_mc_spawn_icon_llama.png", 0)

View file

@ -1,7 +1,4 @@
# textdomain: mobs_mc
Totem of Undying=Totem der Unsterblichkeit
A totem of undying is a rare artifact which may safe you from certain death.=Ein Totem der Unsterblichkeit ist ein seltenes Artefakt, dass Sie vor dem sicheren Tod bewahren kann.
The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=Der Totem funktioniert nur, während Sie ihn halten. Wenn Sie normalerweise tödlich hohen Schaden erhalten, werden Sie vor dem Tod bewahrt und Sie erhalten eine zweite Chance mit 1 TP. Der Totem wird dabei zerstört.
Agent=Akteur
Bat=Fledermaus
Blaze=Lohe
@ -52,13 +49,6 @@ Wolf=Wolf
Husk=Wüstenzombie
Zombie=Zombie
Zombie Pigman=Schweinezombie
Iron Horse Armor=Eisenpferderüstung
Iron horse armor can be worn by horses to increase their protection from harm a bit.=Eine Eisenpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden etwas zu erhöhen.
Golden Horse Armor=Goldpferderüstung
Golden horse armor can be worn by horses to increase their protection from harm.=Eine Goldpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden zu erhöhen.
Diamond Horse Armor=Diamantpferderüstung
Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Eine Diamantpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden beträchtlich zu erhöhen.
Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Platzieren Sie es auf einem Pferd, um die Pferderüstung aufzusetzen. Esel und Maultiere können keine Pferderüstung tragen.
Farmer=Bauer
Fisherman=Fischer
Fletcher=Pfeilmacher
@ -72,4 +62,3 @@ Weapon Smith=Waffenschmied
Tool Smith=Werkzeugschmied
Cleric=Priester
Nitwit=Dorftrottel
Protects you from death while wielding it=Schützt vor dem Tod, wenn es gehalten wird

View file

@ -1,7 +1,4 @@
# textdomain: mobs_mc
Totem of Undying=Tótem de la inmortalidad
A totem of undying is a rare artifact which may safe you from certain death.=Un tótem de la inmortalidad es un artefacto raro que puede salvarte de una muerte segura.
The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=El tótem solo funciona mientras lo sostienes en tu mano. Si recibes un daño crítico, no mueres y obtienes una segunda oportunidad con 1 HP. Sin embargo, el tótem se destruye en el proceso.
Agent=Agente
Bat=Murciélago
Blaze=Blaze
@ -52,13 +49,6 @@ Wolf=Lobo
Husk=Husk
Zombie=Zombie
Zombie Pigman=Cerdo Zombie
Iron Horse Armor=Armadura de hierro para caballo
Iron horse armor can be worn by horses to increase their protection from harm a bit.=Los caballos pueden usar armadura de caballo de hierro para aumentar un poco su protección contra el daño.
Golden Horse Armor=Armadura de oro para caballo
Golden horse armor can be worn by horses to increase their protection from harm.=Los caballos pueden usar armadura de caballo de oro para aumentar su protección contra el daño.
Diamond Horse Armor=Armadura de diamante para caballo
Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Los caballos pueden usar armadura de caballo de diamante para aumentar en gran medida su protección contra el daño.
Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Colóquelo en un caballo para ponerle la armadura de caballo. Los burros y las mulas no pueden usar armadura de caballo.
Farmer=Granjero
Fisherman=Pescador
Fletcher=Flechador

View file

@ -1,7 +1,4 @@
# textdomain: mobs_mc
Totem of Undying=Totem d'immortalité
A totem of undying is a rare artifact which may safe you from certain death.=Un totem d'immortalité est un artefact rare qui peut vous protéger d'une mort certaine.
The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=Le totem ne fonctionne que lorsque vous le tenez dans votre main. Si vous recevez des dégâts mortels, vous êtes sauvé de la mort et vous obtenez une seconde chance avec 1 HP. Cependant, le totem est détruit.
Agent=Agent
Bat=Chauve-souris
Blaze=Blaze
@ -52,13 +49,6 @@ Wolf=Loup
Husk=Zombie Momifié
Zombie=Zombie
Zombie Pigman=Zombie Cochon
Iron Horse Armor=Armure de cheval en fer
Iron horse armor can be worn by horses to increase their protection from harm a bit.=L'armure de cheval en fer peut être portée par les chevaux pour augmenter un peu leur protection contre les dommages.
Golden Horse Armor=Armure de cheval en or
Golden horse armor can be worn by horses to increase their protection from harm.=Une armure de cheval en or peut être portée par les chevaux pour augmenter leur protection contre les dommages.
Diamond Horse Armor=Armure de cheval en diamant
Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Une armure de cheval en diament peut être portée par les chevaux pour augmenter fortement leur protection contre les dommages.
Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Placez-la sur un cheval pour mettre l'armure de cheval. Les ânes et les mules ne peuvent pas porter d'armure de cheval.
Farmer=Fermier
Fisherman=Pêcheur
Fletcher=Archer
@ -72,4 +62,3 @@ Weapon Smith=Fabriquant d'arme
Tool Smith=Fabriquant d'outil
Cleric=Clerc
Nitwit=Crétin
Protects you from death while wielding it=Vous protège de la mort en la maniant

View file

@ -1,7 +1,4 @@
# textdomain: mobs_mc
Totem of Undying=Тотем бессмертия
A totem of undying is a rare artifact which may safe you from certain death.=Тотем бессмертия это редкий артефакт, способный спасти вас от смерти.
The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=Тотем работает только когда вы держите его в руке. Если вы получаете смертельный урон, вы спасаетесь от смерти и получаете второй шанс с 1 HP. Однако тотем при этом уничтожается.
Agent=Агент
Bat=Летучая мышь
Blaze=Ифрит
@ -52,13 +49,6 @@ Wolf=Волк
Husk=Кадавр
Zombie=Зомби
Zombie Pigman=Зомби-свиночеловек
Iron Horse Armor=Железные доспехи лошади
Iron horse armor can be worn by horses to increase their protection from harm a bit.=Железные доспехи лошади, надетые на лошадь, немного защищают её от вреда.
Golden Horse Armor=Золотые доспехи лошади
Golden horse armor can be worn by horses to increase their protection from harm.=Золотые доспехи лошади, надетые на лошадь, защищают её от вреда.
Diamond Horse Armor=Алмазные доспехи лошади
Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Алмазные доспехи лошади, надетые на лошадь, отлично защищают её от вреда.
Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Поместите это на лошадь, чтобы одеть лошадь в доспехи. Ослики и мулы не могут носить лошадиные доспехи.
Farmer=Фермер
Fisherman=Рыбак
Fletcher=Лучник
@ -72,4 +62,3 @@ Weapon Smith=Оружейник
Tool Smith=Инструментальщик
Cleric=Церковник
Nitwit=Нищий
Protects you from death while wielding it=Защищает вас от смерти, пока вы владеете им

View file

@ -1,7 +1,4 @@
# textdomain: mobs_mc
Totem of Undying=
A totem of undying is a rare artifact which may safe you from certain death.=
The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=
Agent=
Bat=
Blaze=
@ -52,13 +49,6 @@ Wolf=
Husk=
Zombie=
Zombie Pigman=
Iron Horse Armor=
Iron horse armor can be worn by horses to increase their protection from harm a bit.=
Golden Horse Armor=
Golden horse armor can be worn by horses to increase their protection from harm.=
Diamond Horse Armor=
Diamond horse armor can be worn by horses to greatly increase their protection from harm.=
Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=
Farmer=
Fisherman=
Fletcher=
@ -72,4 +62,3 @@ Weapon Smith=
Tool Smith=
Cleric=
Nitwit=
Protects you from death while wielding it=

View file

@ -1,6 +1,6 @@
name = mobs_mc
author = maikerumine
description = Adds Minecraft-like monsters and animals.
depends = mcl_init, mcl_particles, mcl_mobs, mcl_wip
depends = mcl_init, mcl_particles, mcl_mobs, mcl_wip, mcl_core
optional_depends = default, mcl_tnt, mcl_bows, mcl_throwing, mcl_fishing, bones, mesecons_materials, mobs_mc_gameconfig, doc_items

View file

@ -13,16 +13,15 @@ local pr = PseudoRandom(os.time()*12)
local default_walk_chance = 70
-- Returns true if the item is food (taming) for the cat/ocelot
local is_food = function(itemstring)
for f=1, #mobs_mc.follow.ocelot do
if itemstring == mobs_mc.follow.ocelot[f] then
return true
elseif string.sub(itemstring, 1, 6) == "group:" and minetest.get_item_group(itemstring, string.sub(itemstring, 7, -1)) ~= 0 then
return true
end
end
return false
local follow = {
"mcl_fishing:fish_raw",
"mcl_fishing:salmon_raw",
"mcl_fishing:clownfish_raw",
"mcl_fishing:pufferfish_raw",
}
local function is_food(itemstring)
return table.indexof(follow, itemstring) ~= -1
end
-- Ocelot
@ -65,7 +64,7 @@ local ocelot = {
run_start = 0,
run_end = 40,
},
follow = mobs_mc.follow.ocelot,
follow = follow,
view_range = 12,
passive = true,
attack_type = "dogfight",
@ -170,19 +169,19 @@ minetest.LIGHT_MAX+1,
30,
15000,
5,
mobs_mc.spawn_height.water+15,
mobs_mc.spawn_height.overworld_max)
mobs_mc.water_level+15,
mcl_vars.mg_overworld_max)
--[[
mobs:spawn({
name = "mobs_mc:ocelot",
nodes = mobs_mc.spawn.jungle,
nodes = { "mcl_core:jungletree", "mcl_core:jungleleaves", "mcl_flowers:fern", "mcl_core:vine" },
neighbors = {"air"},
light_max = minetest.LIGHT_MAX+1,
light_min = 0,
chance = math.ceil(base_spawn_chance * 1.5), -- emulates 1/3 spawn failure rate
active_object_count = 12,
min_height = mobs_mc.spawn_height.water+1, -- Right above ocean level
max_height = mobs_mc.spawn_height.overworld_max,
min_height = mobs_mc.water_level+1, -- Right above ocean level
max_height = mcl_vars.mg_overworld_max,
on_spawn = function(self, pos)
Note: Minecraft has a 1/3 spawn failure rate.
In this mod it is emulated by reducing the spawn rate accordingly (see above).

View file

@ -35,13 +35,13 @@ mcl_mobs:register_mob("mobs_mc:parrot", {
distance = 16,
},
drops = {
{name = mobs_mc.items.feather,
{name = "mcl_mobitems:feather",
chance = 1,
min = 1,
max = 2,
looting = "common",},
},
animation = {
animation = {
stand_speed = 50,
walk_speed = 50,
fly_speed = 50,
@ -66,12 +66,17 @@ mcl_mobs:register_mob("mobs_mc:parrot", {
makes_footstep_sound = false,
fear_height = 0,
view_range = 16,
follow = mobs_mc.follow.parrot,
follow = {
"mcl_farming:wheat_seeds",
"mcl_farming:melon_seeds",
"mcl_farming:pumpkin_seeds",
"mcl_farming:beetroot_seeds",
},
on_rightclick = function(self, clicker)
if self._doomed then return end
local item = clicker:get_wielded_item()
-- Kill parrot if fed with cookie
if item:get_name() == mobs_mc.items.cookie then
if item:get_name() == "mcl_farming:cookie" then
minetest.sound_play("mobs_mc_animal_eat_generic", {object = self.object, max_hear_distance=16}, true)
self.health = 0
-- Doomed to die
@ -107,8 +112,8 @@ minetest.LIGHT_MAX+1,
7,
30000,
1,
mobs_mc.spawn_height.water+7,
mobs_mc.spawn_height.overworld_max)
mobs_mc.water_level+7,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:parrot", S("Parrot"), "mobs_mc_spawn_icon_parrot.png", 0)

View file

@ -25,7 +25,7 @@ mcl_mobs:register_mob("mobs_mc:pig", {
run_velocity = 3,
follow_velocity = 3.4,
drops = {
{name = mobs_mc.items.porkchop_raw,
{name = "mcl_mobitems:porkchop",
chance = 1,
min = 1,
max = 3,
@ -50,7 +50,12 @@ mcl_mobs:register_mob("mobs_mc:pig", {
run_start = 0,
run_end = 40,
},
follow = mobs_mc.follow.pig,
follow = {
"mcl_farming:potato_item",
"mcl_farming:carrot_item",
"mcl_farming:beetroot_item",
"mcl_mobitems:carrot_on_a_stick"
},
view_range = 8,
do_custom = function(self, dtime)
@ -93,7 +98,7 @@ mcl_mobs:register_mob("mobs_mc:pig", {
local wielditem = clicker:get_wielded_item()
-- Feed pig
if wielditem:get_name() ~= mobs_mc.items.carrot_on_a_stick then
if wielditem:get_name() ~= "mcl_mobitems:carrot_on_a_stick" then
if mcl_mobs:feed_tame(self, clicker, 1, true, true) then return end
end
if mcl_mobs:protect(self, clicker) then return end
@ -104,7 +109,7 @@ mcl_mobs:register_mob("mobs_mc:pig", {
-- Put saddle on pig
local item = clicker:get_wielded_item()
if item:get_name() == mobs_mc.items.saddle and self.saddle ~= "yes" then
if item:get_name() == "mcl_mobitems:saddle" and self.saddle ~= "yes" then
self.base_texture = {
"blank.png", -- baby
"mobs_mc_pig.png", -- base
@ -116,11 +121,11 @@ mcl_mobs:register_mob("mobs_mc:pig", {
self.saddle = "yes"
self.tamed = true
self.drops = {
{name = mobs_mc.items.porkchop_raw,
{name = "mcl_mobitems:porkchop",
chance = 1,
min = 1,
max = 3,},
{name = mobs_mc.items.saddle,
{name = "mcl_mobitems:saddle",
chance = 1,
min = 1,
max = 1,},
@ -142,7 +147,7 @@ mcl_mobs:register_mob("mobs_mc:pig", {
mcl_mobs.detach(clicker, {x=1, y=0, z=0})
return
elseif not self.driver and self.saddle == "yes" and wielditem:get_name() == mobs_mc.items.carrot_on_a_stick then
elseif not self.driver and self.saddle == "yes" and wielditem:get_name() == "mcl_mobitems:carrot_on_a_stick" then
-- Ride pig if it has a saddle and player uses a carrot on a stick
mcl_mobs.attach(self, clicker)
@ -157,7 +162,7 @@ mcl_mobs:register_mob("mobs_mc:pig", {
if def.sounds and def.sounds.breaks then
minetest.sound_play(def.sounds.breaks, {pos = clicker:get_pos(), max_hear_distance = 8, gain = 0.5}, true)
end
wielditem = {name = mobs_mc.items.fishing_rod, count = 1}
wielditem = {name = "mcl_fishing:fishing_rod", count = 1}
else
wielditem:add_wear(2521)
end
@ -230,8 +235,8 @@ minetest.LIGHT_MAX+1,
30,
15000,
8,
mobs_mc.spawn_height.overworld_min,
mobs_mc.spawn_height.overworld_max)
mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:pig", S("Pig"), "mobs_mc_spawn_icon_pig.png", 0)

View file

@ -34,13 +34,13 @@ mcl_mobs:register_mob("mobs_mc:polar_bear", {
attack_type = "dogfight",
drops = {
-- 3/4 chance to drop raw fish (poor approximation)
{name = mobs_mc.items.fish_raw,
{name = "mcl_fishing:fish_raw",
chance = 2,
min = 0,
max = 2,
looting = "common",},
-- 1/4 to drop raw salmon
{name = mobs_mc.items.salmon_raw,
{name = "mcl_fishing:salmon_raw",
chance = 4,
min = 0,
max = 2,
@ -83,8 +83,8 @@ minetest.LIGHT_MAX+1,
30,
7000,
3,
mobs_mc.spawn_height.overworld_min,
mobs_mc.spawn_height.overworld_max)
mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
-- spawn egg
mcl_mobs:register_egg("mobs_mc:polar_bear", S("Polar Bear"), "mobs_mc_spawn_icon_polarbear.png", 0)

View file

@ -42,9 +42,9 @@ local rabbit = {
runaway = true,
jump = true,
drops = {
{name = mobs_mc.items.rabbit_raw, chance = 1, min = 0, max = 1, looting = "common",},
{name = mobs_mc.items.rabbit_hide, chance = 1, min = 0, max = 1, looting = "common",},
{name = mobs_mc.items.rabbit_foot, chance = 10, min = 0, max = 1, looting = "rare", looting_factor = 0.03,},
{name = "mcl_mobitems:rabbit", chance = 1, min = 0, max = 1, looting = "common",},
{name = "mcl_mobitems:rabbit_hide", chance = 1, min = 0, max = 1, looting = "common",},
{name = "mcl_mobitems:rabbit_foot", chance = 10, min = 0, max = 1, looting = "rare", looting_factor = 0.03,},
},
fear_height = 4,
animation = {
@ -54,11 +54,24 @@ local rabbit = {
run_start = 0, run_end = 20,
},
-- Follow (yellow) dangelions, carrots and golden carrots
follow = mobs_mc.follow.rabbit,
follow = {
"mcl_flowers:dandelion",
"mcl_farming:carrot_item",
"mcl_farming:carrot_item_gold",
},
view_range = 8,
-- Eat carrots and reduce their growth stage by 1
replace_rate = 10,
replace_what = mobs_mc.replace.rabbit,
replace_what = {
{"mcl_farming:carrot", "mcl_farming:carrot_7", 0},
{"mcl_farming:carrot_7", "mcl_farming:carrot_6", 0},
{"mcl_farming:carrot_6", "mcl_farming:carrot_5", 0},
{"mcl_farming:carrot_5", "mcl_farming:carrot_4", 0},
{"mcl_farming:carrot_4", "mcl_farming:carrot_3", 0},
{"mcl_farming:carrot_3", "mcl_farming:carrot_2", 0},
{"mcl_farming:carrot_2", "mcl_farming:carrot_1", 0},
{"mcl_farming:carrot_1", "air", 0},
},
on_rightclick = function(self, clicker)
-- Feed, tame protect or capture
if mcl_mobs:feed_tame(self, clicker, 1, true, true) then return end
@ -137,8 +150,8 @@ minetest.LIGHT_MAX+1,
30,
15000,
8,
mobs_mc.spawn_height.overworld_min,
mobs_mc.spawn_height.overworld_max)
mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
--[[
local spawn = {
@ -148,12 +161,12 @@ local spawn = {
active_object_count = 10,
min_light = 0,
max_light = minetest.LIGHT_MAX+1,
min_height = mobs_mc.spawn_height.overworld_min,
max_height = mobs_mc.spawn_height.overworld_max,
min_height = mcl_vars.mg_overworld_min,
max_height = mcl_vars.mg_overworld_max,
}
local spawn_desert = table.copy(spawn)
spawn_desert.nodes = mobs_mc.spawn.desert
spawn_desert.nodes = { "mcl_core:sand", "mcl_core:sandstone" }
spawn_desert.on_spawn = function(self, pos)
local texture = "mobs_mc_rabbit_gold.png"
self.base_texture = { "mobs_mc_rabbit_gold.png" }
@ -162,7 +175,7 @@ end
mcl_mobs:spawn(spawn_desert)
local spawn_snow = table.copy(spawn)
spawn_snow.nodes = mobs_mc.spawn.snow
spawn_snow.nodes = { "mcl_core:snow", "mcl_core:snowblock", "mcl_core:dirt_with_grass_snow" }
spawn_snow.on_spawn = function(self, pos)
local texture
local r = math.random(1, 100)
@ -179,7 +192,7 @@ end
mcl_mobs:spawn(spawn_snow)
local spawn_grass = table.copy(spawn)
spawn_grass.nodes = mobs_mc.spawn.grassland
spawn_grass.nodes = { "mcl_core:dirt_with_grass" }
spawn_grass.on_spawn = function(self, pos)
local texture
local r = math.random(1, 100)

View file

@ -8,21 +8,22 @@ local S = minetest.get_translator("mobs_mc")
local colors = {
-- group = { wool, textures }
unicolor_white = { mobs_mc.items.wool_white, "#FFFFFF00" },
unicolor_dark_orange = { mobs_mc.items.wool_brown, "#502A00D0" },
unicolor_grey = { mobs_mc.items.wool_light_grey, "#5B5B5BD0" },
unicolor_darkgrey = { mobs_mc.items.wool_grey, "#303030D0" },
unicolor_blue = { mobs_mc.items.wool_blue, "#0000CCD0" },
unicolor_dark_green = { mobs_mc.items.wool_green, "#005000D0" },
unicolor_green = { mobs_mc.items.wool_lime, "#50CC00D0" },
unicolor_violet = { mobs_mc.items.wool_purple , "#5000CCD0" },
unicolor_light_red = { mobs_mc.items.wool_pink, "#FF5050D0" },
unicolor_yellow = { mobs_mc.items.wool_yellow, "#CCCC00D0" },
unicolor_orange = { mobs_mc.items.wool_orange, "#CC5000D0" },
unicolor_red = { mobs_mc.items.wool_red, "#CC0000D0" },
unicolor_cyan = { mobs_mc.items.wool_cyan, "#00CCCCD0" },
unicolor_red_violet = { mobs_mc.items.wool_magenta, "#CC0050D0" },
unicolor_black = { mobs_mc.items.wool_black, "#000000D0" },
unicolor_white = { "mcl_wool:white", "#FFFFFF00" },
unicolor_dark_orange = { "mcl_wool:brown", "#502A00D0" },
unicolor_grey = { "mcl_wool:silver", "#5B5B5BD0" },
unicolor_darkgrey = { "mcl_wool:grey", "#303030D0" },
unicolor_blue = { "mcl_wool:blue", "#0000CCD0" },
unicolor_dark_green = { "mcl_wool:green", "#005000D0" },
unicolor_green = { "mcl_wool:lime", "#50CC00D0" },
unicolor_violet = { "mcl_wool:purple" , "#5000CCD0" },
unicolor_light_red = { "mcl_wool:pink", "#FF5050D0" },
unicolor_yellow = { "mcl_wool:yellow", "#CCCC00D0" },
unicolor_orange = { "mcl_wool:orange", "#CC5000D0" },
unicolor_red = { "mcl_wool:red", "#CC0000D0" },
unicolor_cyan = { "mcl_wool:cyan", "#00CCCCD0" },
unicolor_red_violet = { "mcl_wool:magenta", "#CC0050D0" },
unicolor_black = { "mcl_wool:black", "#000000D0" },
unicolor_light_blue = { "mcl_wool:light_blue", "#5050FFD0" },
}
local rainbow_colors = {
@ -38,10 +39,6 @@ local rainbow_colors = {
"unicolor_red_violet"
}
if minetest.get_modpath("mcl_wool") ~= nil then
colors["unicolor_light_blue"] = { mobs_mc.items.wool_light_blue, "#5050FFD0" }
end
local sheep_texture = function(color_group)
if not color_group then
color_group = "unicolor_white"
@ -74,7 +71,7 @@ mcl_mobs:register_mob("mobs_mc:sheep", {
makes_footstep_sound = true,
walk_velocity = 1,
drops = {
{name = mobs_mc.items.mutton_raw,
{name = "mcl_mobitems:mutton",
chance = 1,
min = 1,
max = 2,
@ -99,12 +96,15 @@ mcl_mobs:register_mob("mobs_mc:sheep", {
walk_start = 0, walk_end = 40,
run_start = 0, run_end = 40,
},
follow = mobs_mc.follow.sheep,
follow = { "mcl_farming:wheat_item" },
view_range = 12,
-- Eat grass
replace_rate = 20,
replace_what = mobs_mc.replace.sheep,
replace_what = {
{ "mcl_core:dirt_with_grass", "mcl_core:dirt", -1 },
{ "mcl_flowers:tallgrass", "air", 0 },
},
-- Properly regrow wool after eating grass
on_replace = function(self, pos, oldnode, newnode)
if not self.color or not colors[self.color] then
@ -114,7 +114,7 @@ mcl_mobs:register_mob("mobs_mc:sheep", {
self.base_texture = sheep_texture(self.color)
self.object:set_properties({ textures = self.base_texture })
self.drops = {
{name = mobs_mc.items.mutton_raw,
{name = "mcl_mobitems:mutton",
chance = 1,
min = 1,
max = 2,},
@ -152,7 +152,7 @@ mcl_mobs:register_mob("mobs_mc:sheep", {
self.base_texture = sheep_texture(self.color)
self.object:set_properties({ textures = self.base_texture })
self.drops = {
{name = mobs_mc.items.mutton_raw,
{name = "mcl_mobitems:mutton",
chance = 1,
min = 1,
max = 2,},
@ -198,7 +198,7 @@ mcl_mobs:register_mob("mobs_mc:sheep", {
if mcl_mobs:feed_tame(self, clicker, 1, true, true) then return end
if mcl_mobs:protect(self, clicker) then return end
if item:get_name() == mobs_mc.items.shears and not self.gotten and not self.child then
if item:get_name() == "mcl_tools:shears" and not self.gotten and not self.child then
self.gotten = true
local pos = self.object:get_pos()
minetest.sound_play("mcl_tools_shears_cut", {pos = pos}, true)
@ -212,11 +212,11 @@ mcl_mobs:register_mob("mobs_mc:sheep", {
textures = self.base_texture,
})
if not minetest.is_creative_enabled(clicker:get_player_name()) then
item:add_wear(mobs_mc.misc.shears_wear)
item:add_wear(mobs_mc.shears_wear)
clicker:get_inventory():set_stack("main", clicker:get_wield_index(), item)
end
self.drops = {
{name = mobs_mc.items.mutton_raw,
{name = "mcl_mobitems:mutton",
chance = 1,
min = 1,
max = 2,},
@ -238,7 +238,7 @@ mcl_mobs:register_mob("mobs_mc:sheep", {
})
self.color = group
self.drops = {
{name = mobs_mc.items.mutton_raw,
{name = "mcl_mobitems:mutton",
chance = 1,
min = 1,
max = 2,},
@ -351,8 +351,8 @@ minetest.LIGHT_MAX+1,
30,
15000,
3,
mobs_mc.spawn_height.overworld_min,
mobs_mc.spawn_height.overworld_max)
mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:sheep", S("Sheep"), "mobs_mc_spawn_icon_sheep.png", 0)

View file

@ -35,7 +35,7 @@ mcl_mobs:register_mob("mobs_mc:shulker", {
walk_chance = 0,
jump = false,
drops = {
{name = mobs_mc.items.shulker_shell,
{name = "mcl_mobitems:shulker_shell",
chance = 2,
min = 1,
max = 1,
@ -94,5 +94,5 @@ minetest.LIGHT_MAX+1,
30,
5000,
2,
mobs_mc.spawn_height.end_min,
mobs_mc.spawn_height.end_max)
mcl_vars.mg_end_min,
mcl_vars.mg_end_max)

View file

@ -35,7 +35,14 @@ mcl_mobs:register_mob("mobs_mc:silverfish", {
run_velocity = 2,
jump = true,
fear_height = 4,
replace_what = mobs_mc.replace.silverfish,
replace_what = {
{"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},
},
replace_rate = 2,
animation = {
speed_normal = 25, speed_run = 50,

View file

@ -45,17 +45,17 @@ local skeleton = {
damage = 2,
reach = 2,
drops = {
{name = mobs_mc.items.arrow,
{name = "mcl_bows:arrow",
chance = 1,
min = 0,
max = 2,
looting = "common",},
{name = mobs_mc.items.bow,
{name = "mcl_bows:bow",
chance = 100 / 8.5,
min = 1,
max = 1,
looting = "rare",},
{name = mobs_mc.items.bone,
{name = "mcl_mobitems:bone",
chance = 1,
min = 0,
max = 2,
@ -63,7 +63,7 @@ local skeleton = {
-- Head
-- TODO: Only drop if killed by charged creeper
{name = mobs_mc.items.head_skeleton,
{name = "mcl_heads:skeleton",
chance = 200, -- 0.5% chance
min = 1,
max = 1,},
@ -292,8 +292,8 @@ mcl_mobs:spawn_specific(
20,
17000,
2,
mobs_mc.spawn_height.overworld_min,
mobs_mc.spawn_height.overworld_max)
mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
-- Nether spawn
@ -309,8 +309,8 @@ mcl_mobs:spawn_specific(
30,
10000,
3,
mobs_mc.spawn_height.nether_min,
mobs_mc.spawn_height.nether_max)
mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max)
-- Stray spawn
-- TODO: Spawn directly under the sky
@ -329,8 +329,8 @@ mcl_mobs:spawn_specific(
20,
19000,
2,
mobs_mc.spawn_height.water,
mobs_mc.spawn_height.overworld_max)
mobs_mc.water_level,
mcl_vars.mg_overworld_max)
-- spawn eggs

View file

@ -44,19 +44,19 @@ mcl_mobs:register_mob("mobs_mc:witherskeleton", {
damage = 7,
reach = 2,
drops = {
{name = mobs_mc.items.coal,
{name = "mcl_core:coal_lump",
chance = 1,
min = 0,
max = 1,
looting = "common",},
{name = mobs_mc.items.bone,
{name = "mcl_mobitems:bone",
chance = 1,
min = 0,
max = 2,
looting = "common",},
-- Head
{name = mobs_mc.items.head_wither_skeleton,
{name = "mcl_heads:wither_skeleton",
chance = 40, -- 2.5% chance
min = 1,
max = 1,
@ -108,8 +108,8 @@ mcl_mobs:spawn_specific(
30,
5000,
5,
mobs_mc.spawn_height.nether_min,
mobs_mc.spawn_height.nether_max)
mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:witherskeleton", S("Wither Skeleton"), "mobs_mc_spawn_icon_witherskeleton.png", 0)

View file

@ -140,7 +140,7 @@ slime_tiny.damage = 0
slime_tiny.reach = 2.5
slime_tiny.drops = {
-- slimeball
{name = mobs_mc.items.slimeball,
{name = "mcl_mobitems:slimeball",
chance = 1,
min = 0,
max = 2,},
@ -153,8 +153,8 @@ slime_tiny.on_die = nil
mcl_mobs:register_mob("mobs_mc:slime_tiny", slime_tiny)
local smin = mobs_mc.spawn_height.overworld_min
local smax = mobs_mc.spawn_height.water - 23
local smin = mcl_vars.mg_overworld_min
local smax = mobs_mc.water_level - 23
mcl_mobs:spawn_specific(
"mobs_mc:slime_tiny",
@ -315,7 +315,7 @@ local magma_cube_big = {
reach = 3,
armor = 53,
drops = {
{name = mobs_mc.items.magma_cream,
{name = "mcl_mobitems:magma_cream",
chance = 4,
min = 1,
max = 1,},
@ -394,8 +394,8 @@ magma_cube_tiny.on_die = nil
mcl_mobs:register_mob("mobs_mc:magma_cube_tiny", magma_cube_tiny)
local mmin = mobs_mc.spawn_height.nether_min
local mmax = mobs_mc.spawn_height.nether_max
local mmin = mcl_vars.mg_nether_min
local mmax = mcl_vars.mg_nether_max
mcl_mobs:spawn_specific(
"mobs_mc:magma_cube_tiny",
@ -443,9 +443,9 @@ minetest.LIGHT_MAX+1,
mmin,
mmax)
--mcl_mobs:spawn_specific("mobs_mc:magma_cube_tiny", mobs_mc.spawn.nether_fortress, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 11000, 4, mmin, mmax)
--mcl_mobs:spawn_specific("mobs_mc:magma_cube_small", mobs_mc.spawn.nether_fortress, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 11100, 4, mmin, mmax)
--mcl_mobs:spawn_specific("mobs_mc:magma_cube_big", mobs_mc.spawn.nether_fortress, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 11200, 4, mmin, mmax)
--mcl_mobs:spawn_specific("mobs_mc:magma_cube_tiny", { "mcl_nether:nether_brick", "mcl_nether:netherrack" }, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 11000, 4, mmin, mmax)
--mcl_mobs:spawn_specific("mobs_mc:magma_cube_small", { "mcl_nether:nether_brick", "mcl_nether:netherrack" }, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 11100, 4, mmin, mmax)
--mcl_mobs:spawn_specific("mobs_mc:magma_cube_big", { "mcl_nether:nether_brick", "mcl_nether:netherrack" }, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 11200, 4, mmin, mmax)
-- spawn eggs

View file

@ -52,7 +52,7 @@ mcl_mobs:register_mob("mobs_mc:snowman", {
"farming_pumpkin_top.png", --left
},
gotten_texture = gotten_texture,
drops = {{ name = mobs_mc.items.snowball, chance = 1, min = 0, max = 15 }},
drops = {{ name = "mcl_throwing:snowball", chance = 1, min = 0, max = 15 }},
visual_size = {x=3, y=3},
walk_velocity = 0.6,
run_velocity = 2,
@ -106,7 +106,7 @@ mcl_mobs:register_mob("mobs_mc:snowman", {
local belowdef = minetest.registered_nodes[minetest.get_node(below).name]
if belowdef and belowdef.walkable and (belowdef.node_box == nil or belowdef.node_box.type == "regular") then
-- Place top snow
minetest.set_node(pos, {name = mobs_mc.items.top_snow})
minetest.set_node(pos, {name = "mcl_core:snow"})
end
end
end
@ -114,7 +114,7 @@ mcl_mobs:register_mob("mobs_mc:snowman", {
-- Remove pumpkin if using shears
on_rightclick = function(self, clicker)
local item = clicker:get_wielded_item()
if self.gotten ~= true and item:get_name() == mobs_mc.items.shears then
if self.gotten ~= true and item:get_name() == "mcl_tools:shears" then
-- Remove pumpkin
self.gotten = true
self.object:set_properties({
@ -130,7 +130,7 @@ mcl_mobs:register_mob("mobs_mc:snowman", {
-- Wear out
if not minetest.is_creative_enabled(clicker:get_player_name()) then
item:add_wear(mobs_mc.misc.shears_wear)
item:add_wear(mobs_mc.shears_wear)
clicker:get_inventory():set_stack("main", clicker:get_wield_index(), item)
end
end
@ -160,7 +160,7 @@ end
-- This is to be called when a pumpkin or jack'o lantern has been placed. Recommended: In the on_construct function
-- of the node.
-- This summons a snow golen when pos is next to a row of two snow blocks.
mobs_mc.tools.check_snow_golem_summon = function(pos)
function mobs_mc.check_snow_golem_summon(pos)
local checks = {
-- These are the possible placement patterns
-- { snow block pos. 1, snow block pos. 2, snow golem spawn position }
@ -178,7 +178,7 @@ mobs_mc.tools.check_snow_golem_summon = function(pos)
local place = checks[c][3]
local b1n = minetest.get_node(b1)
local b2n = minetest.get_node(b2)
if b1n.name == mobs_mc.items.snow_block and b2n.name == mobs_mc.items.snow_block then
if b1n.name == "mcl_core:snowblock" and b2n.name == "mcl_core:snowblock" then
-- Remove the pumpkin and both snow blocks and summon the snow golem
minetest.remove_node(pos)
minetest.remove_node(b1)

View file

@ -50,8 +50,8 @@ local spider = {
view_range = 16,
floats = 1,
drops = {
{name = mobs_mc.items.string, chance = 1, min = 0, max = 2, looting = "common"},
{name = mobs_mc.items.spider_eye, chance = 3, min = 1, max = 1, looting = "common", looting_chance_function = function(lvl)
{name = "mcl_mobitems:string", chance = 1, min = 0, max = 2, looting = "common"},
{name = "mcl_mobitems:spider_eye", chance = 3, min = 1, max = 1, looting = "common", looting_chance_function = function(lvl)
return 1 - 2 / (lvl + 3)
end},
},
@ -239,8 +239,8 @@ mcl_mobs:spawn_specific(
30,
17000,
2,
mobs_mc.spawn_height.overworld_min,
mobs_mc.spawn_height.overworld_max)
mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:spider", S("Spider"), "mobs_mc_spawn_icon_spider.png", 0)

View file

@ -40,7 +40,7 @@ mcl_mobs:register_mob("mobs_mc:squid", {
run_end = 60,
},
drops = {
{name = mobs_mc.items.black_dye,
{name = "mcl_dye:black",
chance = 1,
min = 1,
max = 3,
@ -49,7 +49,7 @@ mcl_mobs:register_mob("mobs_mc:squid", {
visual_size = {x=3, y=3},
makes_footstep_sound = false,
fly = true,
fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source },
fly_in = { "mcl_core:water_source", "mclx_core:river_water_source" },
breathes_in_water = true,
jump = false,
view_range = 16,
@ -61,7 +61,7 @@ mcl_mobs:register_mob("mobs_mc:squid", {
-- Spawn near the water surface
local water = mobs_mc.spawn_height.water
local water = mobs_mc.water_level
--name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height
mcl_mobs:spawn_specific(
"mobs_mc:squid",

View file

@ -1200,6 +1200,8 @@ end)
--[=======[ MOB REGISTRATION AND SPAWNING ]=======]
local pick_up = { "mcl_farming:bread", "mcl_farming:carrot_item", "mcl_farming:beetroot_item" , "mcl_farming:potato_item" }
mcl_mobs:register_mob("mobs_mc:villager", {
description = S("Villager"),
type = "npc",
@ -1239,7 +1241,7 @@ mcl_mobs:register_mob("mobs_mc:villager", {
die_end = 220,
die_loop = false,
},
follow = mobs_mc.follow.villager,
follow = pick_up,
nofollow = true,
view_range = 16,
fear_height = 4,
@ -1249,7 +1251,7 @@ mcl_mobs:register_mob("mobs_mc:villager", {
_id = nil,
_profession = "unemployed",
look_at_player = true,
pick_up = mobs_mc.follow.villager,
pick_up = pick_up,
can_open_doors = true,
on_pick_up = function(self,itementity)
local clicker
@ -1402,8 +1404,8 @@ minetest.LIGHT_MAX+1,
30,
20,
4,
mobs_mc.spawn_height.water+1,
mobs_mc.spawn_height.overworld_max)
mobs_mc.water_level+1,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:villager", S("Villager"), "mobs_mc_spawn_icon_villager.png", 0)

View file

@ -53,12 +53,12 @@ mcl_mobs:register_mob("mobs_mc:evoker", {
shoot_interval = 15,
passive = false,
drops = {
{name = mobs_mc.items.emerald,
{name = "mcl_core:emerald",
chance = 1,
min = 0,
max = 1,
looting = "common",},
{name = mobs_mc.items.totem,
{name = "mcl_totems:totem",
chance = 1,
min = 1,
max = 1,},

View file

@ -39,12 +39,12 @@ mcl_mobs:register_mob("mobs_mc:vindicator", {
run_velocity = 2.4,
attack_type = "dogfight",
drops = {
{name = mobs_mc.items.emerald,
{name = "mcl_core:emerald",
chance = 1,
min = 0,
max = 1,
looting = "common",},
{name = mobs_mc.items.iron_axe,
{name = "mcl_tools:axe_iron",
chance = 100 / 8.5,
min = 1,
max = 1,

View file

@ -55,24 +55,24 @@ mcl_mobs:register_mob("mobs_mc:villager_zombie", {
attack_type = "dogfight",
group_attack = true,
drops = {
{name = mobs_mc.items.rotten_flesh,
{name = "mcl_mobitems:rotten_flesh",
chance = 1,
min = 0,
max = 2,
looting = "common",},
{name = mobs_mc.items.iron_ingot,
{name = "mcl_core:iron_ingot",
chance = 120, -- 2.5% / 3
min = 1,
max = 1,
looting = "rare",
looting_factor = 0.01 / 3,},
{name = mobs_mc.items.carrot,
{name = "mcl_farming:carrot_item",
chance = 120, -- 2.5% / 3
min = 1,
max = 1,
looting = "rare",
looting_factor = 0.01 / 3,},
{name = mobs_mc.items.potato,
{name = "mcl_farming:potato_item",
chance = 120, -- 2.5% / 3
min = 1,
max = 1,
@ -237,9 +237,9 @@ mcl_mobs:spawn_specific(
30,
4090,
4,
mobs_mc.spawn_height.overworld_min,
mobs_mc.spawn_height.overworld_max)
--mcl_mobs:spawn_specific("mobs_mc:villager_zombie", "overworld", "ground", 0, 7, 30, 60000, 4, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
--mcl_mobs:spawn_specific("mobs_mc:villager_zombie", "overworld", "ground", 0, 7, 30, 60000, 4, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:villager_zombie", S("Zombie Villager"), "mobs_mc_spawn_icon_zombie_villager.png", 0)

View file

@ -42,13 +42,13 @@ mcl_mobs:register_mob("mobs_mc:witch", {
dogshoot_count_max =1.8,
max_drops = 3,
drops = {
{name = mobs_mc.items.glass_bottle, chance = 8, min = 0, max = 2, looting = "common",},
{name = mobs_mc.items.glowstone_dust, chance = 8, min = 0, max = 2, looting = "common",},
{name = mobs_mc.items.gunpowder, chance = 8, min = 0, max = 2, looting = "common",},
{name = mobs_mc.items.redstone, chance = 8, min = 0, max = 2, looting = "common",},
{name = mobs_mc.items.spider_eye, chance = 8, min = 0, max = 2, looting = "common",},
{name = mobs_mc.items.sugar, chance = 8, min = 0, max = 2, looting = "common",},
{name = mobs_mc.items.stick, chance = 4, min = 0, max = 2, looting = "common",},
{name = "mcl_potions:glass_bottle", chance = 8, min = 0, max = 2, looting = "common",},
{name = "mcl_nether:glowstone_dust", chance = 8, min = 0, max = 2, looting = "common",},
{name = "mcl_mobitems:gunpowder", chance = 8, min = 0, max = 2, looting = "common",},
{name = "mesecons:redstone", chance = 8, min = 0, max = 2, looting = "common",},
{name = "mcl_mobitems:spider_eye", chance = 8, min = 0, max = 2, looting = "common",},
{name = "mcl_core:sugar", chance = 8, min = 0, max = 2, looting = "common",},
{name = "mcl_core:stick", chance = 4, min = 0, max = 2, looting = "common",},
},
-- TODO: sounds
animation = {
@ -101,7 +101,7 @@ mcl_mobs:register_arrow("mobs_mc:potion_arrow", {
})
-- TODO: Spawn when witch works properly <- eventually -j4i
--mcl_mobs:spawn_specific("mobs_mc:witch", mobs_mc.spawn.jungle, {"air"}, 0, minetest.LIGHT_MAX-6, 12, 20000, 2, mobs_mc.spawn_height.water-6, mobs_mc.spawn_height.overworld_max)
--mcl_mobs:spawn_specific("mobs_mc:witch", { "mcl_core:jungletree", "mcl_core:jungleleaves", "mcl_flowers:fern", "mcl_core:vine" }, {"air"}, 0, minetest.LIGHT_MAX-6, 12, 20000, 2, mobs_mc.water_level-6, mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:witch", S("Witch"), "mobs_mc_spawn_icon_witch.png", 0, true)

View file

@ -46,7 +46,7 @@ mcl_mobs:register_mob("mobs_mc:wither", {
attack_animals = true,
can_despawn = false,
drops = {
{name = mobs_mc.items.nether_star,
{name = "mcl_mobitems:nether_star",
chance = 1,
min = 1,
max = 1},

View file

@ -6,17 +6,6 @@ local default_walk_chance = 50
local pr = PseudoRandom(os.time()*10)
local is_food = function(itemstring)
for f=1, #mobs_mc.follow.dog do
if itemstring == mobs_mc.follow.dog[f] then
return true
elseif string.sub(itemstring, 1, 6) == "group:" and minetest.get_item_group(itemstring, string.sub(itemstring, 7, -1)) ~= 0 then
return true
end
end
return false
end
-- Wolf
local wolf = {
description = S("Wolf"),
@ -55,13 +44,13 @@ local wolf = {
reach = 2,
attack_type = "dogfight",
fear_height = 4,
follow = mobs_mc.follow.wolf,
follow = { "mcl_mobitems:bone" },
on_rightclick = function(self, clicker)
-- Try to tame wolf (intentionally does NOT use mcl_mobs:feed_tame)
local tool = clicker:get_wielded_item()
local dog, ent
if tool:get_name() == mobs_mc.items.bone then
if tool:get_name() == "mcl_mobitems:bone" then
minetest.sound_play("mobs_mc_wolf_take_bone", {object=self.object, max_hear_distance=16}, true)
if not minetest.is_creative_enabled(clicker:get_player_name()) then
@ -142,9 +131,21 @@ dog.owner_loyal = true
dog.follow_velocity = 3.2
-- Automatically teleport dog to owner
dog.do_custom = mobs_mc.make_owner_teleport_function(12)
dog.follow = mobs_mc.follow.dog
dog.follow = {
"mcl_mobitems:rabbit", "mcl_mobitems:cooked_rabbit",
"mcl_mobitems:mutton", "mcl_mobitems:cooked_mutton",
"mcl_mobitems:beef", "mcl_mobitems:cooked_beef",
"mcl_mobitems:chicken", "mcl_mobitems:cooked_chicken",
"mcl_mobitems:porkchop", "mcl_mobitems:cooked_porkchop",
"mcl_mobitems:rotten_flesh",
}
dog.attack_animals = nil
dog.specific_attack = nil
local is_food = function(itemstring)
return table.indexof(dog.follow, itemstring) ~= -1
end
dog.on_rightclick = function(self, clicker)
local item = clicker:get_wielded_item()
@ -160,7 +161,7 @@ dog.on_rightclick = function(self, clicker)
local eatable = minetest.get_item_group(item, "eatable")
if eatable > 0 then
hp_add = eatable
elseif item:get_name() == mobs_mc.items.rotten_flesh then
elseif item:get_name() == "mcl_mobitems:rotten_flesh" then
hp_add = 4
else
hp_add = 4
@ -260,7 +261,7 @@ minetest.LIGHT_MAX+1,
30,
9000,
7,
mobs_mc.spawn_height.water+3,
mobs_mc.spawn_height.overworld_max)
mobs_mc.water_level+3,
mcl_vars.mg_overworld_max)
mcl_mobs:register_egg("mobs_mc:wolf", S("Wolf"), "mobs_mc_spawn_icon_wolf.png", 0)

View file

@ -10,24 +10,24 @@ local S = minetest.get_translator("mobs_mc")
--###################
local drops_common = {
{name = mobs_mc.items.rotten_flesh,
{name = "mcl_mobitems:rotten_flesh",
chance = 1,
min = 0,
max = 2,
looting = "common",},
{name = mobs_mc.items.iron_ingot,
{name = "mcl_core:iron_ingot",
chance = 120, -- 2.5% / 3
min = 1,
max = 1,
looting = "rare",
looting_factor = 0.01 / 3,},
{name = mobs_mc.items.carrot,
{name = "mcl_farming:carrot_item",
chance = 120, -- 2.5% / 3
min = 1,
max = 1,
looting = "rare",
looting_factor = 0.01 / 3,},
{name = mobs_mc.items.potato,
{name = "mcl_farming:potato_item",
chance = 120, -- 2.5% / 3
min = 1,
max = 1,
@ -39,7 +39,7 @@ local drops_zombie = table.copy(drops_common)
table.insert(drops_zombie, {
-- Zombie Head
-- TODO: Only drop if killed by charged creeper
name = mobs_mc.items.head_zombie,
name = "mcl_heads:zombie",
chance = 200, -- 0.5%
min = 1,
max = 1,
@ -238,8 +238,8 @@ mcl_mobs:spawn_specific(
30,
6000,
4,
mobs_mc.spawn_height.overworld_min,
mobs_mc.spawn_height.overworld_max)
mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
-- Baby zombie is 20 times less likely than regular zombies
mcl_mobs:spawn_specific(
"mobs_mc:baby_zombie",
@ -330,8 +330,8 @@ mcl_mobs:spawn_specific(
30,
60000,
4,
mobs_mc.spawn_height.overworld_min,
mobs_mc.spawn_height.overworld_max)
mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
mcl_mobs:spawn_specific(
@ -346,8 +346,8 @@ mcl_mobs:spawn_specific(
30,
6500,
4,
mobs_mc.spawn_height.overworld_min,
mobs_mc.spawn_height.overworld_max)
mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
mcl_mobs:spawn_specific(
"mobs_mc:baby_husk",
"overworld",
@ -360,8 +360,8 @@ mcl_mobs:spawn_specific(
30,
65000,
4,
mobs_mc.spawn_height.overworld_min,
mobs_mc.spawn_height.overworld_max)
mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
-- Spawn eggs
mcl_mobs:register_egg("mobs_mc:husk", S("Husk"), "mobs_mc_spawn_icon_husk.png", 0)

View file

@ -47,22 +47,22 @@ local pigman = {
run_velocity = 2.6,
pathfinding = 1,
drops = {
{name = mobs_mc.items.rotten_flesh,
{name = "mcl_mobitems:rotten_flesh",
chance = 1,
min = 1,
max = 1,
looting = "common"},
{name = mobs_mc.items.gold_nugget,
{name = "mcl_core:gold_nugget",
chance = 1,
min = 0,
max = 1,
looting = "common"},
{name = mobs_mc.items.gold_ingot,
{name = "mcl_core:gold_ingot",
chance = 40, -- 2.5%
min = 1,
max = 1,
looting = "rare"},
{name = mobs_mc.items.gold_sword,
{name = "mcl_tools:sword_gold",
chance = 100 / 8.5,
min = 1,
max = 1,
@ -125,8 +125,8 @@ minetest.LIGHT_MAX+1,
30,
6000,
3,
mobs_mc.spawn_height.nether_min,
mobs_mc.spawn_height.nether_max)
mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max)
-- Baby zombie is 20 times less likely than regular zombies
mcl_mobs:spawn_specific(
"mobs_mc:baby_pigman",
@ -140,11 +140,11 @@ minetest.LIGHT_MAX+1,
30,
100000,
4,
mobs_mc.spawn_height.nether_min,
mobs_mc.spawn_height.nether_max)
mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max)
-- Spawning in Nether portals in the Overworld
--mobs:spawn_specific("mobs_mc:pigman", mobs_mc.spawn.nether_portal, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 500, 4, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
--mobs:spawn_specific("mobs_mc:pigman", {"mcl_portals:portal"}, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 500, 4, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:pigman", S("Zombie Pigman"), "mobs_mc_spawn_icon_zombie_pigman.png", 0)

View file

@ -1,213 +0,0 @@
mobs_mc = {}
mobs_mc.override = {}
mobs_mc.override.items = {
blaze_rod = "mcl_mobitems:blaze_rod",
blaze_powder = "mcl_mobitems:blaze_powder",
chicken_raw = "mcl_mobitems:chicken",
chicken_cooked = "mcl_mobitems:cooked_chicken",
feather = "mcl_mobitems:feather",
beef_raw = "mcl_mobitems:beef",
beef_cooked = "mcl_mobitems:cooked_beef",
bowl = "mcl_core:bowl",
mushroom_stew = "mcl_mushrooms:mushroom_stew",
milk = "mcl_mobitems:milk_bucket",
dragon_egg = "mcl_end:dragon_egg",
egg = "mcl_throwing:egg",
ender_eye = "mcl_mobitems:ender_eye",
ghast_tear = "mcl_mobitems:ghast_tear",
saddle = "mcl_mobitems:saddle",
porkchop_raw = "mcl_mobitems:porkchop",
porkchop_cooked = "mcl_mobitems:cooked_porkchop",
carrot_on_a_stick = "mcl_mobitems:carrot_on_a_stick",
rabbit_raw = "mcl_mobitems:rabbit",
rabbit_cooked = "mcl_mobitems:cooked_rabbit",
rabbit_hide = "mcl_mobitems:rabbit_hide",
mutton_raw = "mcl_mobitems:mutton",
mutton_cooked = "mcl_mobitems:cooked_mutton",
shulker_shell = "mcl_mobitems:shulker_shell",
magma_cream = "mcl_mobitems:magma_cream",
spider_eye = "mcl_mobitems:spider_eye",
rotten_flesh = "mcl_mobitems:rotten_flesh",
snowball = "mcl_throwing:snowball",
top_snow = "mcl_core:snow",
snow_block = "mcl_core:snowblock",
arrow = "mcl_bows:arrow",
bow = "mcl_bows:bow",
head_zombie = "mcl_heads:zombie",
head_creeper = "mcl_heads:creeper",
head_skeleton = "mcl_heads:skeleton",
head_wither_skeleton = "mcl_heads:wither_skeleton",
leather = "mcl_mobitems:leather",
shears = "mcl_tools:shears",
mushroom_red = "mcl_mushrooms:mushroom_red",
mushroom_brown = "mcl_mushrooms:mushroom_brown",
bucket = "mcl_buckets:bucket_empty",
grass_block = "mcl_core:dirt_with_grass",
string = "mcl_mobitems:string",
stick = "mcl_core:stick",
flint = "mcl_core:flint",
iron_ingot = "mcl_core:iron_ingot",
iron_block = "mcl_core:ironblock",
fire = "mcl_fire:fire",
gunpowder = "mcl_mobitems:gunpowder",
flint_and_steel = "mcl_fire:flint_and_steel",
water_source = "mcl_core:water_source",
river_water_source = "mclx_core:river_water_source",
black_dye = "mcl_dye:black",
poppy = "mcl_flowers:poppy",
dandelion = "mcl_flowers:dandelion",
coal = "mcl_core:coal_lump",
emerald = "mcl_core:emerald",
iron_axe = "mcl_tools:axe_iron",
gold_sword = "mcl_tools:sword_gold",
gold_ingot = "mcl_core:gold_ingot",
gold_nugget = "mcl_core:gold_nugget",
glowstone_dust = "mcl_nether:glowstone_dust",
redstone = "mesecons:redstone",
glass_bottle = "mcl_potions:glass_bottle",
sugar = "mcl_core:sugar",
wheat = "mcl_farming:wheat_item",
cookie = "mcl_farming:cookie",
potato = "mcl_farming:potato_item",
hay_bale = "mcl_farming:hay_block",
prismarine_shard = "mcl_ocean:prismarine_shard",
prismarine_crystals = "mcl_ocean:prismarine_crystals",
apple = "mcl_core:apple",
golden_apple = "mcl_core:apple_gold",
rabbit_foot = "mcl_mobitems:rabbit_foot",
wet_sponge = "mcl_sponges:sponge_wet",
-- Other
nether_brick_block = "mcl_nether:nether_brick",
netherrack = "mcl_nether:netherrack",
nether_star = "mcl_mobitems:nether_star",
nether_portal = "mcl_portals:portal",
mycelium = "mcl_core:mycelium",
carrot = "mcl_farming:carrot_item",
golden_carrot = "mcl_farming:carrot_item_gold",
fishing_rod = "mcl_fishing:fishing_rod",
fish_raw = "mcl_fishing:fish_raw",
salmon_raw = "mcl_fishing:salmon_raw",
clownfish_raw = "mcl_fishing:clownfish_raw",
pufferfish_raw = "mcl_fishing:pufferfish_raw",
bone = "mcl_mobitems:bone",
slimeball = "mcl_mobitems:slimeball",
ender_pearl = "mcl_throwing:ender_pearl",
wool_white = "mcl_wool:white",
wool_light_grey = "mcl_wool:silver",
wool_grey = "mcl_wool:grey",
wool_blue = "mcl_wool:blue",
wool_lime = "mcl_wool:lime",
wool_green = "mcl_wool:green",
wool_purple = "mcl_wool:purple",
wool_pink = "mcl_wool:pink",
wool_yellow = "mcl_wool:yellow",
wool_orange = "mcl_wool:orange",
wool_brown = "mcl_wool:brown",
wool_red = "mcl_wool:red",
wool_cyan = "mcl_wool:cyan",
wool_magenta = "mcl_wool:magenta",
wool_black = "mcl_wool:black",
wool_light_blue = "mcl_wool:light_blue",
music_discs = {
"mcl_jukebox:record_1",
"mcl_jukebox:record_2",
"mcl_jukebox:record_3",
"mcl_jukebox:record_4",
"mcl_jukebox:record_5",
"mcl_jukebox:record_6",
"mcl_jukebox:record_7",
"mcl_jukebox:record_8",
"mcl_jukebox:record_9",
},
}
--Horses, Llamas, and Wolves shouldn't follow, but leaving this alone until leads are implemented.
mobs_mc.override.follow = {
chicken = { "mcl_farming:wheat_seeds", "mcl_farming:melon_seeds", "mcl_farming:pumpkin_seeds", "mcl_farming:beetroot_seeds", },
parrot = { "mcl_farming:wheat_seeds", "mcl_farming:melon_seeds", "mcl_farming:pumpkin_seeds", "mcl_farming:beetroot_seeds", },
pig = { mobs_mc.override.items.potato, mobs_mc.override.items.carrot, "mcl_farming:beetroot_item", mobs_mc.override.items.carrot_on_a_stick},
ocelot = { mobs_mc.override.items.fish_raw, mobs_mc.override.items.salmon_raw, mobs_mc.override.items.clownfish_raw, mobs_mc.override.items.pufferfish_raw, },
sheep = { mobs_mc.override.items.wheat },
cow = { mobs_mc.override.items.wheat },
horse = { mobs_mc.override.items.apple, mobs_mc.override.items.sugar, mobs_mc.override.items.wheat, mobs_mc.override.items.hay_bale, mobs_mc.override.items.golden_apple, mobs_mc.override.items.golden_carrot },
llama = { mobs_mc.override.items.wheat, mobs_mc.override.items.hay_bale },
rabbit = { mobs_mc.override.items.dandelion, mobs_mc.override.items.carrot, mobs_mc.override.items.golden_carrot },
wolf = { mobs_mc.override.items.bone },
dog = { mobs_mc.override.items.rabbit_raw, mobs_mc.override.items.rabbit_cooked, mobs_mc.override.items.mutton_raw, mobs_mc.override.items.mutton_cooked, mobs_mc.override.items.beef_raw, mobs_mc.override.items.beef_cooked, mobs_mc.override.items.chicken_raw, mobs_mc.override.items.chicken_cooked, mobs_mc.override.items.rotten_flesh, mobs_mc.override.items.porkchop_raw, mobs_mc.override.items.porkchop_cooked },
}
mobs_mc.override.replace = {
-- Rabbits reduce carrot growth stage by 1
rabbit = {
{"mcl_farming:carrot", "mcl_farming:carrot_7", 0},
{"mcl_farming:carrot_7", "mcl_farming:carrot_6", 0},
{"mcl_farming:carrot_6", "mcl_farming:carrot_5", 0},
{"mcl_farming:carrot_5", "mcl_farming:carrot_4", 0},
{"mcl_farming:carrot_4", "mcl_farming:carrot_3", 0},
{"mcl_farming:carrot_3", "mcl_farming:carrot_2", 0},
{"mcl_farming:carrot_2", "mcl_farming:carrot_1", 0},
{"mcl_farming:carrot_1", "air", 0},
},
-- Sheep eat grass
sheep = {
{ "mcl_core:dirt_with_grass", "mcl_core:dirt", -1 },
{ "mcl_flowers:tallgrass", "air", 0 },
},
-- Silverfish populate stone, etc. with monster eggs
silverfish = {
{"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},
},
}
mobs_mc.override.misc = {
totem_fail_nodes = { "mcl_core:void", "mcl_core:realm_barrier" },
}
-- List of nodes on which mobs can spawn
mobs_mc.override.spawn = {
solid = { "group:solid", }, -- spawn on "solid" nodes
grassland = { "mcl_core:dirt_with_grass" },
savanna = { "mcl_core:dirt_with_grass" },
grassland_savanna = { "mcl_core:dirt_with_grass" },
desert = { "mcl_core:sand", "mcl_core:sandstone" },
jungle = { "mcl_core:jungletree", "mcl_core:jungleleaves", "mcl_flowers:fern", "mcl_core:vine" },
snow = { "mcl_core:snow", "mcl_core:snowblock", "mcl_core:dirt_with_grass_snow" },
-- End stone added for shulkers because End cities don't generate yet
end_city = { "mcl_end:end_stone", "mcl_end:purpur_block" },
-- Netherrack added because there are no Nether fortresses yet. TODO: Remove netherrac from list as soon they're available
nether_fortress = { "mcl_nether:nether_brick", "mcl_nether:netherrack" },
nether_portal = { mobs_mc.override.items.nether_portal },
wolf = { mobs_mc.override.items.grass_block, "mcl_core:dirt", "mcl_core:dirt_with_grass_snow", "mcl_core:snow", "mcl_core:snowblock", "mcl_core:podzol" },
village = { "mcl_villages:stonebrickcarved", "mcl_core:grass_path", "mcl_core:sandstonesmooth2" },
}
-- This table contains important spawn height references for the mob spawn height.
mobs_mc.override.spawn_height = {
water = tonumber(minetest.settings:get("water_level")) or 0, -- Water level in the Overworld
-- Overworld boundaries (inclusive)
overworld_min = mcl_vars.mg_overworld_min,
overworld_max = mcl_vars.mg_overworld_max,
-- Nether boundaries (inclusive)
nether_min = mcl_vars.mg_nether_min,
nether_max = mcl_vars.mg_nether_max,
-- End boundaries (inclusive)
end_min = mcl_vars.mg_end_min,
end_max = mcl_vars.mg_end_max,
}

View file

@ -1,4 +0,0 @@
name = mobs_mc_gameconfig
author = Wuzzy
description = mobs_mc game configuration for MCL2
depends = mcl_init, mcl_core

View file

@ -185,7 +185,7 @@ local dispenserdef = {
entity.base_texture = { "blank.png", "mobs_mc_sheep.png" }
texture = entity.base_texture
entity.drops = {
{ name = mobs_mc.items.mutton_raw, chance = 1, min = 1, max = 2 },
{ name = "mcl_mobitems:mutton", chance = 1, min = 1, max = 2 },
}
used = true
elseif entname == "mobs_mc:snowman" then
@ -199,9 +199,9 @@ local dispenserdef = {
elseif entname == "mobs_mc:mooshroom" then
local droppos = vector.offset(pos, 0, 1.4, 0)
if entity.base_texture[1] == "mobs_mc_mooshroom_brown.png" then
minetest.add_item(droppos, mobs_mc.items.mushroom_brown .. " 5")
minetest.add_item(droppos, "mcl_mushrooms:mushroom_brown 5")
else
minetest.add_item(droppos, mobs_mc.items.mushroom_red .. " 5")
minetest.add_item(droppos, "mcl_mushrooms:mushroom_red 5")
end
obj = mcl_util.replace_mob(obj, "mobs_mc:cow")
entity = obj:get_luaentity()

View file

@ -228,14 +228,14 @@ minetest.register_craft({
minetest.register_craft({
type = "cooking",
output = "mcl_core:iron_nugget",
recipe = "mobs_mc:iron_horse_armor",
recipe = "mcl_mobitems:iron_horse_armor",
cooktime = 10,
})
minetest.register_craft({
type = "cooking",
output = "mcl_core:gold_nugget",
recipe = "mobs_mc:gold_horse_armor",
recipe = "mcl_mobitems:gold_horse_armor",
cooktime = 10,
})

View file

@ -126,8 +126,8 @@ pumpkin_face_base_def._mcl_armor_texture = "mcl_farming_pumpkin_face.png"
pumpkin_face_base_def.on_construct = function(pos)
-- Attempt to spawn iron golem or snow golem
mobs_mc.tools.check_iron_golem_summon(pos)
mobs_mc.tools.check_snow_golem_summon(pos)
mobs_mc.check_iron_golem_summon(pos)
mobs_mc.check_snow_golem_summon(pos)
end
if minetest.get_modpath("mcl_armor") then
@ -203,8 +203,8 @@ minetest.register_node("mcl_farming:pumpkin_face_light", {
sounds = mcl_sounds.node_sound_wood_defaults(),
on_construct = function(pos)
-- Attempt to spawn iron golem or snow golem
mobs_mc.tools.check_iron_golem_summon(pos)
mobs_mc.tools.check_snow_golem_summon(pos)
mobs_mc.check_iron_golem_summon(pos)
mobs_mc.check_snow_golem_summon(pos)
end,
on_rotate = on_rotate,
_mcl_blast_resistance = 1,

File diff suppressed because one or more lines are too long

View file

@ -327,6 +327,51 @@ minetest.register_tool("mcl_mobitems:carrot_on_a_stick", {
_mcl_toollike_wield = true,
})
local horse_armor_use = S("Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.")
minetest.register_craftitem("mcl_mobitems:iron_horse_armor", {
description = S("Iron Horse Armor"),
_doc_items_longdesc = S("Iron horse armor can be worn by horses to increase their protection from harm a bit."),
_doc_items_usagehelp = horse_armor_use,
inventory_image = "mcl_mobitems_iron_horse_armor.png",
_horse_overlay_image = "mcl_mobitems_horse_armor_iron.png",
sounds = {
_mcl_armor_equip = "mcl_armor_equip_iron",
},
stack_max = 1,
groups = { horse_armor = 85 },
})
minetest.register_craftitem("mcl_mobitems:gold_horse_armor", {
description = S("Golden Horse Armor"),
_doc_items_longdesc = S("Golden horse armor can be worn by horses to increase their protection from harm."),
_doc_items_usagehelp = horse_armor_use,
inventory_image = "mcl_mobitems_gold_horse_armor.png",
_horse_overlay_image = "mcl_mobitems_horse_armor_gold.png",
sounds = {
_mcl_armor_equip = "mcl_armor_equip_iron",
},
stack_max = 1,
groups = { horse_armor = 60 },
})
minetest.register_craftitem("mcl_mobitems:diamond_horse_armor", {
description = S("Diamond Horse Armor"),
_doc_items_longdesc = S("Diamond horse armor can be worn by horses to greatly increase their protection from harm."),
_doc_items_usagehelp = horse_armor_use,
inventory_image = "mcl_mobitems_diamond_horse_armor.png",
_horse_overlay_image = "mcl_mobitems_horse_armor_diamond.png",
sounds = {
_mcl_armor_equip = "mcl_armor_equip_diamond",
},
stack_max = 1,
groups = { horse_armor = 45 },
})
minetest.register_alias("mobs_mc:iron_horse_armor", "mcl_mobitems:iron_horse_armor")
minetest.register_alias("mobs_mc:gold_horse_armor", "mcl_mobitems:gold_horse_armor")
minetest.register_alias("mobs_mc:diamond_horse_armor", "mcl_mobitems:diamond_horse_armor")
-----------
-- Crafting
-----------
@ -437,11 +482,8 @@ minetest.register_craft({
{"mcl_mobitems:slimeball","mcl_mobitems:slimeball","mcl_mobitems:slimeball",}},
})
minetest.register_on_item_eat(function (hp_change, replace_with_item, itemstack, user, pointed_thing)
-- poisoning with spider eye
minetest.register_on_item_eat(function (hp_change, replace_with_item, itemstack, user, pointed_thing) -- poisoning with spider eye
if itemstack:get_name() == "mcl_mobitems:spider_eye" then
mcl_potions.poison_func(user, 1, 4)
end
end )
end)

View file

@ -93,3 +93,10 @@ A carrot on a stick can be used on saddled pigs to ride them.=Eine Karottenrute
Place it on a saddled pig to mount it. You can now ride the pig like a horse. Pigs will also walk towards you when you just wield the carrot on a stick.=Platzieren Sie sie auf einem Schwein mit Sattel, um sich aufzusatteln. Sie können nun das Schwein wie ein Pferd reiten. Schweine werden auch auf Sie zugehen, wenn Sie einfach nur die Karottenrute halten.
Iron Horse Armor=Eisenpferderüstung
Iron horse armor can be worn by horses to increase their protection from harm a bit.=Eine Eisenpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden etwas zu erhöhen.
Golden Horse Armor=Goldpferderüstung
Golden horse armor can be worn by horses to increase their protection from harm.=Eine Goldpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden zu erhöhen.
Diamond Horse Armor=Diamantpferderüstung
Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Eine Diamantpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden beträchtlich zu erhöhen.
Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Platzieren Sie es auf einem Pferd, um die Pferderüstung aufzusetzen. Esel und Maultiere können keine Pferderüstung tragen.

View file

@ -93,10 +93,15 @@ A carrot on a stick can be used on saddled pigs to ride them.=La caña con zanah
Place it on a saddled pig to mount it. You can now ride the pig like a horse. Pigs will also walk towards you when you just wield the carrot on a stick.=Colóquelo sobre un cerdo ensillado para montarlo. Ahora puedes montar el cerdo como un caballo. Los cerdos también caminarán hacia ti cuando solo manejes la zanahoria en un palo.
Iron Horse Armor=Armadura de hierro para caballo
Iron horse armor can be worn by horses to increase their protection from harm a bit.=Los caballos pueden usar armadura de caballo de hierro para aumentar un poco su protección contra el daño.
Golden Horse Armor=Armadura de oro para caballo
Golden horse armor can be worn by horses to increase their protection from harm.=Los caballos pueden usar armadura de caballo de oro para aumentar su protección contra el daño.
Diamond Horse Armor=Armadura de diamante para caballo
Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Los caballos pueden usar armadura de caballo de diamante para aumentar en gran medida su protección contra el daño.
Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Colóquelo en un caballo para ponerle la armadura de caballo. Los burros y las mulas no pueden usar armadura de caballo.
##### not used anymore #####
Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will cure all forms of poisoning, but restores no hunger points.=La leche es muy refrescante y se puede obtener usando un cubo en una vaca. Beberlo curará todas las formas de envenenamiento, pero no restaura los puntos de hambre.

View file

@ -92,3 +92,11 @@ Lets you ride a saddled pig=Vous permet de monter un cochon sellé
A carrot on a stick can be used on saddled pigs to ride them.=Une carotte sur un bâton peut être utilisée sur les porcs sellés pour les monter.
Place it on a saddled pig to mount it. You can now ride the pig like a horse. Pigs will also walk towards you when you just wield the carrot on a stick.=Placez-le sur un cochon sellé pour le monter. Vous pouvez maintenant monter le cochon comme un cheval. Les porcs marcheront également vers vous lorsque vous brandirez la carotte sur un bâton.
Iron Horse Armor=Armure de cheval en fer
Iron horse armor can be worn by horses to increase their protection from harm a bit.=L'armure de cheval en fer peut être portée par les chevaux pour augmenter un peu leur protection contre les dommages.
Golden Horse Armor=Armure de cheval en or
Golden horse armor can be worn by horses to increase their protection from harm.=Une armure de cheval en or peut être portée par les chevaux pour augmenter leur protection contre les dommages.
Diamond Horse Armor=Armure de cheval en diamant
Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Une armure de cheval en diament peut être portée par les chevaux pour augmenter fortement leur protection contre les dommages.
Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Placez-la sur un cheval pour mettre l'armure de cheval. Les ânes et les mules ne peuvent pas porter d'armure de cheval.

View file

@ -93,3 +93,10 @@ A carrot on a stick can be used on saddled pigs to ride them.=Удочку с м
Place it on a saddled pig to mount it. You can now ride the pig like a horse. Pigs will also walk towards you when you just wield the carrot on a stick.=Поместите это на осёдланную свинью, чтобы закрепиться на ней. Теперь вы можете ехать на ней, как на лошади. Свиньи также идут вперёд, когда вы просто держите удочку с морковью.
Iron Horse Armor=Железные доспехи лошади
Iron horse armor can be worn by horses to increase their protection from harm a bit.=Железные доспехи лошади, надетые на лошадь, немного защищают её от вреда.
Golden Horse Armor=Золотые доспехи лошади
Golden horse armor can be worn by horses to increase their protection from harm.=Золотые доспехи лошади, надетые на лошадь, защищают её от вреда.
Diamond Horse Armor=Алмазные доспехи лошади
Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Алмазные доспехи лошади, надетые на лошадь, отлично защищают её от вреда.
Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Поместите это на лошадь, чтобы одеть лошадь в доспехи. Ослики и мулы не могут носить лошадиные доспехи.

View file

@ -93,3 +93,10 @@ A carrot on a stick can be used on saddled pigs to ride them.=
Place it on a saddled pig to mount it. You can now ride the pig like a horse. Pigs will also walk towards you when you just wield the carrot on a stick.=
Iron Horse Armor=
Iron horse armor can be worn by horses to increase their protection from harm a bit.=
Golden Horse Armor=
Golden horse armor can be worn by horses to increase their protection from harm.=
Diamond Horse Armor=
Diamond horse armor can be worn by horses to greatly increase their protection from harm.=
Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=

View file

Before

Width:  |  Height:  |  Size: 1,023 B

After

Width:  |  Height:  |  Size: 1,023 B

View file

Before

Width:  |  Height:  |  Size: 837 B

After

Width:  |  Height:  |  Size: 837 B

View file

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -1,35 +1,43 @@
local S = minetest.get_translator(minetest.get_current_modname())
local hud_totem = {}
minetest.register_on_leaveplayer(function(player)
hud_totem[player] = nil
end)
minetest.register_craftitem("mcl_totems:totem", {
description = S("Totem of Undying"),
_tt_help = minetest.colorize(mcl_colors.GREEN, S("Protects you from death while wielding it")),
_doc_items_longdesc = S("A totem of undying is a rare artifact which may safe you from certain death."),
_doc_items_usagehelp = S("The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however."),
inventory_image = "mcl_totems_totem.png",
wield_image = "mcl_totems_totem.png",
stack_max = 1,
groups = {combat_item = 1, offhand_item = 1},
})
minetest.register_alias("mobs_mc:totem", "mcl_totems:totem")
local particle_colors = {"98BF22", "C49E09", "337D0B", "B0B021", "1E9200"} -- TODO: real MC colors
-- Save the player from death when holding totem of undying in hand
mcl_damage.register_modifier(function(obj, damage, reason)
if obj:is_player() then
if obj:is_player() and not reason.bypasses_totem then
local hp = obj:get_hp()
if hp - damage <= 0 then
local wield = obj:get_wielded_item()
local in_offhand = false
if not (wield:get_name() == "mobs_mc:totem") then
if not (wield:get_name() == "mcl_totems:totem") then
local inv = obj:get_inventory()
if inv then
wield = obj:get_inventory():get_stack("offhand", 1)
in_offhand = true
end
end
if wield:get_name() == "mobs_mc:totem" then
if wield:get_name() == "mcl_totems:totem" then
local ppos = obj:get_pos()
local pnname = minetest.get_node(ppos).name
-- Some exceptions when _not_ to save the player
for n = 1, #mobs_mc.misc.totem_fail_nodes do
if pnname == mobs_mc.misc.totem_fail_nodes[n] then
return
end
end
-- Reset breath as well
if obj:get_breath() < 11 then
obj:set_breath(10)
end

View file

@ -0,0 +1,5 @@
# textdomain: mcl_totems
Totem of Undying=Totem der Unsterblichkeit
A totem of undying is a rare artifact which may safe you from certain death.=Ein Totem der Unsterblichkeit ist ein seltenes Artefakt, dass Sie vor dem sicheren Tod bewahren kann.
The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=Der Totem funktioniert nur, während Sie ihn halten. Wenn Sie normalerweise tödlich hohen Schaden erhalten, werden Sie vor dem Tod bewahrt und Sie erhalten eine zweite Chance mit 1 TP. Der Totem wird dabei zerstört.
Protects you from death while wielding it=Schützt vor dem Tod, wenn es gehalten wird

View file

@ -0,0 +1,4 @@
# textdomain: mcl_totems
Totem of Undying=Tótem de la inmortalidad
A totem of undying is a rare artifact which may safe you from certain death.=Un tótem de la inmortalidad es un artefacto raro que puede salvarte de una muerte segura.
The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=El tótem solo funciona mientras lo sostienes en tu mano. Si recibes un daño crítico, no mueres y obtienes una segunda oportunidad con 1 HP. Sin embargo, el tótem se destruye en el proceso.

View file

@ -0,0 +1,5 @@
# textdomain: mcl_totems
Totem of Undying=Totem d'immortalité
A totem of undying is a rare artifact which may safe you from certain death.=Un totem d'immortalité est un artefact rare qui peut vous protéger d'une mort certaine.
The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=Le totem ne fonctionne que lorsque vous le tenez dans votre main. Si vous recevez des dégâts mortels, vous êtes sauvé de la mort et vous obtenez une seconde chance avec 1 HP. Cependant, le totem est détruit.
Protects you from death while wielding it=Vous protège de la mort en la maniant

View file

@ -0,0 +1,5 @@
# textdomain: mcl_totems
Totem of Undying=Тотем бессмертия
A totem of undying is a rare artifact which may safe you from certain death.=Тотем бессмертия это редкий артефакт, способный спасти вас от смерти.
The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=Тотем работает только когда вы держите его в руке. Если вы получаете смертельный урон, вы спасаетесь от смерти и получаете второй шанс с 1 HP. Однако тотем при этом уничтожается.
Protects you from death while wielding it=Защищает вас от смерти, пока вы владеете им

View file

@ -0,0 +1,5 @@
# textdomain: mcl_totems
Totem of Undying=
A totem of undying is a rare artifact which may safe you from certain death.=
The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=
Protects you from death while wielding it=

View file

Before

Width:  |  Height:  |  Size: 346 B

After

Width:  |  Height:  |  Size: 346 B

View file

@ -73,13 +73,13 @@ local loottable =
{ itemstring = "mcl_mobitems:saddle", weight = 20 },
{ itemstring = "mcl_jukebox:record_1", weight = 15 },
{ itemstring = "mcl_jukebox:record_4", weight = 15 },
{ itemstring = "mobs_mc:iron_horse_armor", weight = 15 },
{ itemstring = "mcl_mobitems:iron_horse_armor", weight = 15 },
{ itemstring = "mcl_core:apple_gold", weight = 15 },
{ itemstring = "mcl_books:book", weight = 10, func = function(stack, pr)
mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr)
end },
{ itemstring = "mobs_mc:gold_horse_armor", weight = 10 },
{ itemstring = "mobs_mc:diamond_horse_armor", weight = 5 },
{ itemstring = "mcl_mobitems:gold_horse_armor", weight = 10 },
{ itemstring = "mcl_mobitems:diamond_horse_armor", weight = 5 },
{ itemstring = "mcl_core:apple_gold_enchanted", weight = 2 },
}
},

View file

@ -463,9 +463,9 @@ local function temple_placement_callback(p1, p2, size, rotation, pr)
{ itemstring = "mcl_core:iron_ingot", weight = 15, amount_min = 1, amount_max = 5 },
{ itemstring = "mcl_core:emerald", weight = 15, amount_min = 1, amount_max = 3 },
{ itemstring = "", weight = 15, },
{ itemstring = "mobs_mc:iron_horse_armor", weight = 15, },
{ itemstring = "mobs_mc:gold_horse_armor", weight = 10, },
{ itemstring = "mobs_mc:diamond_horse_armor", weight = 5, },
{ itemstring = "mcl_mobitems:iron_horse_armor", weight = 15, },
{ itemstring = "mcl_mobitems:gold_horse_armor", weight = 10, },
{ itemstring = "mcl_mobitems:diamond_horse_armor", weight = 5, },
{ itemstring = "mcl_core:diamond", weight = 5, amount_min = 1, amount_max = 3 },
{ itemstring = "mcl_core:apple_gold_enchanted", weight = 2, },
}

View file

@ -122,9 +122,9 @@ function settlements.fill_chest(pos, pr)
{ itemstring = "mcl_core:obsidian", weight = 5, amount_min = 3, amount_max = 7 },
{ itemstring = "mcl_core:sapling", weight = 5, amount_min = 3, amount_max = 7 },
{ itemstring = "mcl_mobitems:saddle", weight = 3 },
{ itemstring = "mobs_mc:iron_horse_armor", weight = 1 },
{ itemstring = "mobs_mc:gold_horse_armor", weight = 1 },
{ itemstring = "mobs_mc:diamond_horse_armor", weight = 1 },
{ itemstring = "mcl_mobitems:iron_horse_armor", weight = 1 },
{ itemstring = "mcl_mobitems:gold_horse_armor", weight = 1 },
{ itemstring = "mcl_mobitems:diamond_horse_armor", weight = 1 },
}
}}
local items = mcl_loot.get_multi_loot(loottable, prand)

View file

@ -14,12 +14,6 @@ local function handle_kill_command(suspect, victim)
return false, S("@1 is already dead", victim)
end
end
-- If player holds a totem of undying, destroy it before killing,
-- so it doesn't rescue the player.
local wield = victimref:get_wielded_item()
if wield:get_name() == "mobs_mc:totem" then
victimref:set_wielded_item("")
end
-- DIE!
victimref:set_hp(0, {_mcl_type = "out_of_world"})
-- Log