Cleanup mobs

master
MoNTE48 2019-06-22 22:14:05 +02:00
parent 528f7f0be9
commit 03d0b23879
34 changed files with 237 additions and 365 deletions

View File

@ -330,9 +330,9 @@ core.register_item(":unknown", {
})
core.register_node(":air", {
description = "Air (you hacker you!)",
inventory_image = "air.png",
wield_image = "air.png",
description = "Air",
inventory_image = "blank.png",
wield_image = "blank.png",
drawtype = "airlike",
paramtype = "light",
sunlight_propagates = true,

View File

@ -472,7 +472,9 @@ if not boost_cart.mtg_compat then
return
end
if not minetest.settings:get_bool("creative_mode") or not minetest.is_singleplayer() then
if not (creative and creative.is_enabled_for and
creative.is_enabled_for(placer)) or
not minetest.is_singleplayer() then
itemstack:take_item()
end
return itemstack

View File

@ -16,7 +16,8 @@ minetest.register_on_joinplayer(function(player)
local stack = inv:get_stack("main", i)
local itemname = stack:get_name()
if not minetest.registered_items[itemname] then
if not minetest.registered_items[itemname] or
minetest.registered_items[itemname].description == "Air" then
inv:set_stack("main", i, "")
end
end
@ -35,20 +36,18 @@ local function clean()
if not minetest.is_valid_pos(pos_scan) then
return
end
--local hash = minetest.hash_node_position(pos_scan)
-- local hash = minetest.hash_node_position(pos_scan)
local nodename = minetest.get_node(pos_scan).name
--[[if not kpos[hash] then
local nodename = minetest.get_node(pos_scan).name
-- if not kpos[hash] then
-- local nodename = minetest.get_node(pos_scan).name
if not minetest.registered_nodes[nodename] then
minetest.remove_node(pos_scan)
end
kpos[hash] = true]]
if not minetest.registered_nodes[nodename] then
minetest.remove_node(pos_scan)
end
-- kpos[hash] = true
-- end
local objs = minetest.get_objects_inside_radius(pos_scan, 0.5)
if #objs > 0 then

View File

@ -6,6 +6,7 @@ return {
"farming:bread",
"flowers:mushroom_red",
"flowers:mushroom_brown",
"mobs:chicken_egg",
"mobs:chicken_egg_fried",
"mobs:chicken_raw",
"mobs:chicken_cooked",
@ -16,4 +17,6 @@ return {
"mobs:meat",
"mobs:pork_raw",
"mobs:pork",
"mobs:rabbit_raw",
"mobs:rabbit_cooked",
}

View File

@ -14,24 +14,7 @@ return {
"mobs_animal:kitten",
"mobs_animal:pig",
"mobs_animal:wolf",
"mobs_animal:sheep_grey",
"mobs_animal:sheep_magenta",
"mobs_animal:sheep_pink",
"mobs_animal:sheep_white",
"mobs_animal:sheep_magenta",
"mobs_animal:sheep_orange",
"mobs_animal:sheep_blue",
"mobs_animal:sheep_dark_grey",
"mobs_animal:sheep_pink",
"mobs_animal:sheep_red",
"mobs_animal:sheep_dark_green",
"mobs_animal:sheep_violet",
"mobs_animal:sheep_white",
"mobs_animal:sheep_black",
"mobs_animal:sheep_yellow",
"mobs_animal:sheep_brown",
"mobs_monster:spider",
"mobs_monster:small_spider",
"mobs_monster:skeleton",

View File

@ -539,7 +539,11 @@ local function snowball_impact(thrower, pos)
end
function default.snow_shoot_snowball(itemstack, player, pointed_thing)
itemstack:take_item()
if not (creative and creative.is_enabled_for and
creative.is_enabled_for(player)) or
not minetest.is_singleplayer() then
itemstack:take_item()
end
minetest.item_throw("default:snowball_entity", player, 19, -3,
snowball_impact)
minetest.sound_play("throwing_sound", {

View File

@ -137,14 +137,14 @@ minetest.register_node("itemframes:frame",{
local name = clicker and clicker:get_player_name()
if name == meta:get_string("owner") or
minetest.check_player_privs(name, "protection_bypass") then
drop_item(pos,node)
drop_item(pos, node)
local s = itemstack:take_item()
meta:set_string("item",s:to_string())
update_item(pos,node)
update_item(pos, node)
end
return itemstack
end,
on_punch = function(pos,node,puncher)
on_punch = function(pos, node, puncher)
local meta = minetest.get_meta(pos)
local name = puncher and puncher:get_player_name()
if name == meta:get_string("owner") or

View File

@ -10,9 +10,7 @@ mobs:register_mob("mobs_animal:bear", {
run_start = 105, run_end = 135,
punch_start = 70, punch_end = 100,
},
textures = {
{"mobs_bear.png"},
},
textures = {"mobs_bear.png"},
sounds = {
random = "mobs_bear",
attack = "mobs_bear_angry",
@ -44,12 +42,12 @@ mobs:register_mob("mobs_animal:bear", {
fall_damage = 3,
fear_height = 4,
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
{name = "mobs:meat_raw", chance = 2, min = 1, max = 1},
{name = "mobs:meat_raw", chance = 2, min = 1, max = 1},
{name = "mobs:leather", chance = 1, min = 1, max = 1},
{name = "mobs:leather", chance = 2, min = 1, max = 1}
{name = "mobs:meat_raw"},
{name = "mobs:meat_raw"},
{name = "mobs:meat_raw", chance = 2},
{name = "mobs:meat_raw", chance = 2},
{name = "mobs:leather"},
{name = "mobs:leather", chance = 2}
},
replace_what = {
"farming:blueberry_4", "farming:raspberry_4"
@ -79,7 +77,7 @@ mobs:register_mob("mobs_animal:bear", {
return
end
--mobs:capture_mob(self, clicker, 0, 0, 80, false, nil)
end,
end,
after_activate = function(self, staticdata, def, dtime)
-- replace bear using the old directx model
if self.mesh == "mobs_bear.x" then
@ -104,6 +102,3 @@ mobs:spawn({
})
mobs:register_egg("mobs_animal:bear", "Bear egg", "mobs_bear_egg.png", 1)
-- compatibility
mobs:alias_mob("mobs:bear", "mobs_animal:bear")

View File

@ -1,4 +1,3 @@
-- Bunny by ExeterDad
mobs:register_mob("mobs_animal:bunny", {
stepheight = 0.6,
type = "animal",
@ -25,8 +24,8 @@ mobs:register_mob("mobs_animal:bunny", {
jump = true,
jump_height = 5,
drops = {
{name = "mobs:rabbit_raw", chance = 1, min = 1, max = 1},
{name = "mobs:rabbit_hide", chance = 1, min = 0, max = 1},
{name = "mobs:rabbit_raw"},
{name = "mobs:rabbit_hide", min = 0, max = 1},
},
water_damage = 1,
lava_damage = 4,
@ -113,6 +112,3 @@ mobs:spawn({
})
mobs:register_egg("mobs_animal:bunny", "Bunny egg", "mobs_bunny_evil.png", 1)
-- compatibility
mobs:alias_mob("mobs:bunny", "mobs_animal:bunny")

View File

@ -1,4 +1,3 @@
-- Chicken by JK Murray
mobs:register_mob("mobs_animal:chicken", {
type = "animal",
passive = true,
@ -9,7 +8,6 @@ mobs:register_mob("mobs_animal:chicken", {
visual = "mesh",
mesh = "mobs_chicken.b3d",
textures = {"mobs_chicken.png"},
child_texture = {"mobs_chicken.png"},
makes_footstep_sound = true,
sounds = {
random = "mobs_chicken",
@ -18,7 +16,7 @@ mobs:register_mob("mobs_animal:chicken", {
run_velocity = 3,
runaway = true,
drops = {
{name = "mobs:chicken_raw", chance = 1, min = 1, max = 1}
{name = "mobs:chicken_raw"}
},
water_damage = 0,
lava_damage = 5,
@ -38,14 +36,12 @@ mobs:register_mob("mobs_animal:chicken", {
view_range = 5,
on_rightclick = function(self, clicker)
if mobs:feed_tame(self, clicker, 8, true, true) then return end
if mobs:protect(self, clicker) then return end
--if mobs:capture_mob(self, clicker, 30, 50, 80, false, nil) then return end
end,
do_custom = function(self, dtime)
self.egg_timer = (self.egg_timer or 0) + dtime
if self.egg_timer < 10 then
return
@ -58,9 +54,7 @@ mobs:register_mob("mobs_animal:chicken", {
end
local pos = self.object:get_pos()
minetest.add_item(pos, "mobs:egg")
minetest.add_item(pos, "mobs:chicken_egg")
minetest.sound_play("default_place_node_hard", {
pos = pos,
gain = 1.0,
@ -92,8 +86,6 @@ mobs:spawn({
mobs:register_egg("mobs_animal:chicken", "Chicken egg", "mobs_chicken_egg_inv.png", 1)
mobs:alias_mob("mobs:chicken", "mobs_animal:chicken") -- compatibility
-- egg entity
mobs:register_arrow("mobs_animal:egg_entity", {
@ -105,14 +97,14 @@ mobs:register_arrow("mobs_animal:egg_entity", {
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 = {fleshy = 1},
damage_groups = {fleshy=1},
}, nil)
end,
hit_mob = function(self, player)
player:punch(minetest.get_player_by_name(self.playername) or self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 1},
damage_groups = {fleshy=1},
}, nil)
end,
@ -136,7 +128,6 @@ mobs:register_arrow("mobs_animal:egg_entity", {
local ent2 = mob:get_luaentity()
mob:set_properties({
textures = ent2.child_texture[1],
visual_size = {
x = ent2.base_size.x / 2,
y = ent2.base_size.y / 2
@ -157,11 +148,8 @@ mobs:register_arrow("mobs_animal:egg_entity", {
end
})
-- egg throwing item
local egg_VELOCITY = 19
-- shoot egg
local mobs_shoot_egg = function (item, player, pointed_thing)
@ -182,13 +170,12 @@ local mobs_shoot_egg = function (item, player, pointed_thing)
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:setvelocity({
x = dir.x * egg_VELOCITY,
y = dir.y * egg_VELOCITY,
z = dir.z * egg_VELOCITY
x = dir.x * 19,
y = dir.y * 19,
z = dir.z * 19
})
obj:set_acceleration({
@ -200,71 +187,20 @@ local mobs_shoot_egg = function (item, player, pointed_thing)
-- pass player name to egg for chick ownership
local ent2 = obj:get_luaentity()
ent2.playername = player:get_player_name()
item:take_item()
if not mobs.is_creative(player) or
not minetest.is_singleplayer() then
item:take_item()
end
return item
end
-- egg
minetest.register_node(":mobs:egg", {
description = "Egg",
tiles = {"mobs_chicken_egg.png"},
inventory_image = "mobs_chicken_egg.png",
minetest.register_craftitem(":mobs:chicken_egg", {
description = "Chicken Egg",
inventory_image = "mobs_chicken_egg.png",
visual_scale = 0.7,
drawtype = "plantlike",
wield_image = "mobs_chicken_egg.png",
paramtype = "light",
walkable = false,
is_ground_content = true,
sunlight_propagates = true,
selection_box = {
type = "fixed",
fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2}
},
groups = {food_egg = 1, snappy = 2, dig_immediate = 3},
after_place_node = function(pos, placer, itemstack)
if placer:is_player() then
minetest.set_node(pos, {name = "mobs:egg", param2 = 1})
end
end,
on_use = mobs_shoot_egg
on_use = mobs_shoot_egg,
groups = {snappy = 2, dig_immediate = 3}
})
-- fried egg
minetest.register_craftitem(":mobs:chicken_egg_fried", {
description = "Fried Egg",
inventory_image = "mobs_chicken_egg_fried.png",
on_use = minetest.item_eat(2),
groups = {food_egg_fried = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
recipe = "mobs:egg",
output = "mobs:chicken_egg_fried",
})
-- raw chicken
minetest.register_craftitem(":mobs:chicken_raw", {
description = "Raw Chicken",
inventory_image = "mobs_chicken_raw.png",
on_use = minetest.item_eat(2),
groups = {food_meat_raw = 1, food_chicken_raw = 1, flammable = 2},
})
-- cooked chicken
minetest.register_craftitem(":mobs:chicken_cooked", {
description = "Cooked Chicken",
inventory_image = "mobs_chicken_cooked.png",
on_use = minetest.item_eat(6),
groups = {food_meat = 1, food_chicken = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
recipe = "mobs:chicken_raw",
output = "mobs:chicken_cooked",
})
minetest.register_alias("mobs:egg", "air")

View File

@ -24,11 +24,11 @@ mobs:register_mob("mobs_animal:cow", {
jump = true,
jump_height = 4,
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
{name = "mobs:meat_raw", chance = 2, min = 1, max = 1},
{name = "mobs:meat_raw", chance = 2, min = 1, max = 1},
{name = "mobs:leather", chance = 2, min = 1, max = 1},
{name = "mobs:leather", chance = 2, min = 1, max = 1}
{name = "mobs:meat_raw"},
{name = "mobs:meat_raw", chance = 2},
{name = "mobs:meat_raw", chance = 2},
{name = "mobs:leather", chance = 2},
{name = "mobs:leather", chance = 2}
},
water_damage = 0,
lava_damage = 5,
@ -87,7 +87,6 @@ mobs:register_mob("mobs_animal:cow", {
end
local inv = clicker:get_inventory()
tool:take_item()
clicker:set_wielded_item(tool)
@ -98,12 +97,11 @@ mobs:register_mob("mobs_animal:cow", {
pos.y = pos.y + 0.5
minetest.add_item(pos, {name = "mobs:bucket_milk"})
end
self.gotten = true -- milked
return
end
end,
on_replace = function(self, pos, oldnode, newnode)
self.food = (self.food or 0) + 1
@ -125,7 +123,7 @@ mobs:register_mob("mobs_animal:cow", {
end
end
end,
})
})
mobs:spawn({
name = "mobs_animal:cow",
@ -139,56 +137,3 @@ mobs:spawn({
})
mobs:register_egg("mobs_animal:cow", "Cow", "mobs_cow_egg.png", 1)
mobs:alias_mob("mobs:cow", "mobs_animal:cow") -- compatibility
-- bucket of milk
minetest.register_craftitem(":mobs:bucket_milk", {
description = "Bucket of Milk",
inventory_image = "mobs_bucket_milk.png",
stack_max = 1,
on_use = minetest.item_eat(8, "bucket:bucket_empty"),
groups = {food_milk = 1, flammable = 3},
})
-- cheese wedge
minetest.register_craftitem(":mobs:cheese", {
description = "Cheese",
inventory_image = "mobs_cheese.png",
on_use = minetest.item_eat(4),
groups = {food_cheese = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
output = "mobs:cheese",
recipe = "mobs:bucket_milk",
cooktime = 5,
replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}}
})
-- cheese block
minetest.register_node(":mobs:cheeseblock", {
description = "Cheese Block",
tiles = {"mobs_cheeseblock.png"},
is_ground_content = false,
groups = {crumbly = 3},
sounds = default.node_sound_dirt_defaults()
})
minetest.register_craft({
output = "mobs:cheeseblock",
recipe = {
{'mobs:cheese', 'mobs:cheese', 'mobs:cheese'},
{'mobs:cheese', 'mobs:cheese', 'mobs:cheese'},
{'mobs:cheese', 'mobs:cheese', 'mobs:cheese'},
}
})
minetest.register_craft({
output = "mobs:cheese 9",
recipe = {
{'mobs:cheeseblock'},
}
})

View File

@ -146,7 +146,3 @@ mobs:register_mob("mobs_animal:dog", {
})
mobs:register_egg("mobs_animal:dog", "Dog Egg", "wool_brown.png", 1)
-- compatibility
mobs:alias_mob("mobs:wolf", "mobs_animal:wolf")
mobs:alias_mob("mobs:dog", "mobs_animal:dog")

View File

@ -1,22 +1,10 @@
local path = minetest.get_modpath("mobs_animal")
-- Animals
dofile(path .. "/bear.lua") -- KrupnoPavel
dofile(path .. "/bunny.lua") -- ExeterDad
dofile(path .. "/chicken.lua") -- JKmurray
dofile(path .. "/cow.lua") -- KrupnoPavel
dofile(path .. "/dog.lua") -- KrupnoPavel
dofile(path .. "/kitten.lua") -- Jordach/BFD
dofile(path .. "/pig.lua") -- KrupnoPavel
dofile(path .. "/pig.lua") -- -- Warthog(Boar) by KrupnoPavel (MIT). Changed to Boar and tweaked by Kaadmy (WTFPL) and MoNTE48 (LGPLv3)
dofile(path .. "/sheep.lua") -- PilzAdam
-- Removed
mobs:register_mob("mobs_animal:rat", {
lifetimer = 1,
})
-- compatibility
mobs:alias_mob("mobs:rat", "mobs_animal:rat")
mobs:alias_mob("mobs:rat_meat", "mobs:meat_raw")
mobs:alias_mob("mobs:rat_cooked", "mobs:meat")

View File

@ -1,4 +1,3 @@
-- Kitten by Jordach / BFD
mobs:register_mob("mobs_animal:kitten", {
stepheight = 0.6,
type = "animal",
@ -27,7 +26,7 @@ mobs:register_mob("mobs_animal:kitten", {
jump = true,
jump_height = 5,
drops = {
{name = "farming:string", chance = 1, min = 1, max = 1}
{name = "farming:string"}
},
water_damage = 1,
lava_damage = 5,
@ -64,5 +63,3 @@ mobs:spawn({
})
mobs:register_egg("mobs_animal:kitten", "Cat's egg", "mobs_kitten_egg.png", 1)
mobs:alias_mob("mobs:kitten", "mobs_animal:kitten") -- compatibility

View File

@ -1,5 +1,3 @@
-- Warthog(Boar) by KrupnoPavel (MIT)
-- Changed to Boar and tweaked by Kaadmy (WTFPL) and MoNTE48 (LGPLv3)
mobs:register_mob("mobs_animal:pig", {
type = "animal",
passive = false,
@ -33,9 +31,9 @@ mobs:register_mob("mobs_animal:pig", {
end
return {
{name = "mobs:pork_raw", chance = 1, min = 1, max = 1},
{name = "mobs:pork_raw", chance = 2, min = 1, max = 1},
{name = "mobs:pork_raw", chance = 2, min = 1, max = 1}
{name = "mobs:pork_raw"},
{name = "mobs:pork_raw", chance = 2},
{name = "mobs:pork_raw", chance = 2}
}
end,
water_damage = 0,
@ -69,6 +67,3 @@ mobs:spawn({
})
mobs:register_egg("mobs_animal:pig", "Pig egg", "mobs_pig_egg.png", 1)
-- compatibility
mobs:alias_mob("mobs:pig", "mobs_animal:pig")

View File

@ -1,4 +1,3 @@
-- Sheep by PilzAdam
local dyes = dye.dyes
for i = 1, #dyes do
@ -15,9 +14,7 @@ for i = 1, #dyes do
collisionbox = {-0.4, -1, -0.4, 0.4, 0.3, 0.4},
visual = "mesh",
mesh = "mobs_sheep.b3d",
textures = {
{"mobs_sheep_" .. name .. ".png"},
},
textures = {"mobs_sheep_" .. name .. ".png"},
gotten_texture = {"mobs_sheep_shaved.png"},
gotten_mesh = "mobs_sheep_shaved.b3d",
makes_footstep_sound = true,
@ -31,9 +28,9 @@ for i = 1, #dyes do
jump = true,
jump_height = 3,
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
{name = "mobs:meat_raw", chance = 2, min = 1, max = 1},
{name = "wool:" .. name, chance = 1, min = 1, max = 1}
{name = "mobs:meat_raw"},
{name = "mobs:meat_raw", chance = 2},
{name = "wool:" .. name}
},
water_damage = 0,
lava_damage = 5,
@ -71,21 +68,16 @@ for i = 1, #dyes do
end
end,
on_rightclick = function(self, clicker)
--are we feeding?
if mobs:feed_tame(self, clicker, 8, true, true) then
--if fed 7x grass or wheat then sheep regrows wool
if self.food and self.food > 6 then
self.gotten = false
self.object:set_properties({
textures = {"mobs_sheep_" .. name .. ".png"},
mesh = "mobs_sheep.b3d",
})
end
return
end
@ -95,96 +87,73 @@ for i = 1, #dyes do
--are we giving a haircut>
if itemname == "mobs:shears" then
if self.gotten ~= false
or self.child ~= false
if self.gotten or self.child
or player ~= self.owner
or not minetest.get_modpath("wool") then
return
end
self.gotten = true -- shaved
local obj = minetest.add_item(
self.object:get_pos(),
ItemStack( "wool:" .. name .. " " .. math.random(1, 3) )
)
if obj then
obj:setvelocity({
x = math.random(-1, 1),
y = 5,
z = math.random(-1, 1)
})
end
item:add_wear(650) -- 100 uses
clicker:set_wielded_item(item)
self.object:set_properties({
textures = {"mobs_sheep_shaved.png"},
mesh = "mobs_sheep_shaved.b3d",
})
return
end
--are we coloring?
if itemname:find("dye:") then
if self.gotten == false
and self.child == false
and self.tamed == true
and player == self.owner then
local colr = string.split(itemname, ":")[2]
for i = 1, #dyes do
local name = unpack(dyes[i])
if name == colr then
local pos = self.object:get_pos()
self.object:remove()
local mob = minetest.add_entity(pos, "mobs_animal:sheep_" .. colr)
local ent = mob:get_luaentity()
ent.owner = player
ent.tamed = true
-- take item
if not mobs.is_creative(clicker:get_player_name()) then
if not mobs.is_creative(player) or
not minetest.is_singleplayer() then
item:take_item()
clicker:set_wielded_item(item)
end
break
end
end
end
return
end
-- protect mod with mobs:protector item
if mobs:protect(self, clicker) then return end
--are we capturing?
--if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end
end
})
mobs:register_egg("mobs_animal:sheep_" .. name, desc .. " Sheep egg", "wool_" .. name .. ".png", 1)
-- compatibility
mobs:alias_mob("mobs:sheep_" .. name, "mobs_animal:sheep_" .. name)
minetest.register_alias("mobs_animal:sheep_" .. name, "mobs_animal:sheep_white")
end
mobs:register_egg("mobs_animal:sheep_white", "White Sheep egg", "wool_white.png", 1)
mobs:spawn({
name = "mobs_animal:sheep_white",
nodes = {"default:dirt", "default:sand", "default:redsand", "default:snow", "default:snowblock", "default:dirt_with_snow", "default:dirt_with_grass"},
@ -239,5 +208,3 @@ mobs:spawn({
max_height = 31000,
day_toggle = true,
})
mobs:alias_mob("mobs:sheep", "mobs_animal:sheep_white") -- compatibility

Binary file not shown.

Before

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 B

View File

@ -1,8 +1,5 @@
local path = minetest.get_modpath("mobs_monster")
-- Monsters
dofile(path .. "/skeleton.lua") -- Blockmen
dofile(path .. "/spider.lua") -- AspireMint
dofile(path .. "/zombie.lua") -- Blockmen

View File

@ -2,9 +2,7 @@ mobs:register_mob("mobs_monster:skeleton", {
type = "monster",
visual = "mesh",
mesh = "mobs_zombie.b3d",
textures = {
{"mobs_skeleton.png"},
},
textures = {"mobs_skeleton.png"},
collisionbox = {-0.25, -1, -0.3, 0.25, 0.75, 0.3},
animation = {
speed_normal = 10, speed_run = 15,
@ -36,8 +34,8 @@ mobs:register_mob("mobs_monster:skeleton", {
run_velocity = 0.5,
jump = false,
drops = {
{name = "default:bone", chance = 2, min = 1, max = 1},
{name = "default:bone", chance = 2, min = 1, max = 1}
{name = "default:bone", chance = 2},
{name = "default:bone", chance = 2}
},
after_activate = function(self, staticdata, def, dtime)
-- replace skeleton using the old directx model
@ -62,6 +60,3 @@ mobs:spawn({
})
mobs:register_egg("mobs_monster:skeleton", "Skeleton egg", "mobs_chicken_egg.png^default_bone.png", 1)
-- compatibility
mobs:alias_mob("mobs:skeleton", "mobs_monster:skeleton")

View File

@ -29,8 +29,8 @@ mobs:register_mob("mobs_monster:spider", {
view_range = 15,
floats = 0,
drops = {
{name = "farming:string", chance = 1, min = 1, max = 1},
{name = "farming:string", chance = 2, min = 1, max = 1}
{name = "farming:string"},
{name = "farming:string", chance = 2}
},
water_damage = 5,
lava_damage = 5,
@ -47,16 +47,16 @@ mobs:register_mob("mobs_monster:spider", {
punch_start = 25,
punch_end = 45,
},
after_activate = function(self, staticdata, def, dtime)
-- replace spider using the old directx model
if self.mesh == "mobs_spider.x" then
local pos = self.object:get_pos()
if pos then
minetest.add_entity(pos, self.name)
self.object:remove()
end
after_activate = function(self, staticdata, def, dtime)
-- replace spider using the old directx model
if self.mesh == "mobs_spider.x" then
local pos = self.object:get_pos()
if pos then
minetest.add_entity(pos, self.name)
self.object:remove()
end
end,
end
end,
})
mobs:spawn({
@ -73,8 +73,6 @@ mobs:spawn({
mobs:register_egg("mobs_monster:spider", "Spider egg", "mobs_chicken_egg.png^mobs_cobweb.png", 1)
mobs:register_egg("mobs_monster:small_spider", "Small Spider egg", "mobs_chicken_egg.png^mobs_cobweb.png", 1)
mobs:alias_mob("mobs:spider", "mobs_monster:spider") -- compatibility
-- Small spider
mobs:register_mob("mobs_monster:small_spider", {
@ -108,7 +106,7 @@ mobs:register_mob("mobs_monster:small_spider", {
view_range = 10,
floats = 0,
drops = {
{name = "farming:string", chance = 1, min = 1, max = 1}
{name = "farming:string"}
},
water_damage = 5,
lava_damage = 5,
@ -125,16 +123,16 @@ mobs:register_mob("mobs_monster:small_spider", {
punch_start = 25,
punch_end = 45,
},
after_activate = function(self, staticdata, def, dtime)
-- replace spider using the old directx model
if self.mesh == "mobs_spider.x" then
local pos = self.object:get_pos()
if pos then
minetest.add_entity(pos, self.name)
self.object:remove()
end
after_activate = function(self, staticdata, def, dtime)
-- replace spider using the old directx model
if self.mesh == "mobs_spider.x" then
local pos = self.object:get_pos()
if pos then
minetest.add_entity(pos, self.name)
self.object:remove()
end
end,
end
end,
})
mobs:spawn({
@ -148,26 +146,6 @@ mobs:spawn({
max_height = 31000,
})
-- cobweb
minetest.register_node(":mobs:cobweb", {
description = "Cobweb",
drawtype = "plantlike",
visual_scale = 1.2,
tiles = {"mobs_cobweb.png"},
inventory_image = "mobs_cobweb.png",
paramtype = "light",
sunlight_propagates = true,
liquid_viscosity = 7,
liquidtype = "source",
liquid_alternative_flowing = "mobs:cobweb",
liquid_alternative_source = "mobs:cobweb",
liquid_renewable = false,
liquid_range = 0,
walkable = false,
groups = {snappy = 1, disable_jump = 1, speed = -30},
sounds = default.node_sound_leaves_defaults(),
})
minetest.register_craft({
output = "mobs:cobweb",
recipe = {

View File

@ -2,9 +2,7 @@ mobs:register_mob("mobs_monster:zombie", {
type = "monster",
visual = "mesh",
mesh = "mobs_zombie.b3d",
textures = {
{"mobs_zombie.png"},
},
textures = {"mobs_zombie.png"},
collisionbox = {-0.25, -1, -0.3, 0.25, 0.75, 0.3},
animation = {
speed_normal = 10, speed_run = 15,
@ -36,9 +34,9 @@ mobs:register_mob("mobs_monster:zombie", {
run_velocity = 0.5,
jump = false,
drops = {
{name = "mobs_monster:rotten_flesh", chance = 1, min = 1, max = 1},
{name = "mobs_monster:rotten_flesh", chance = 2, min = 1, max = 1},
{name = "mobs_monster:rotten_flesh", chance = 2, min = 1, max = 1}
{name = "mobs_monster:rotten_flesh"},
{name = "mobs_monster:rotten_flesh", chance = 2},
{name = "mobs_monster:rotten_flesh", chance = 2}
},
after_activate = function(self, staticdata, def, dtime)
-- replace zombies using the old directx model
@ -62,14 +60,3 @@ mobs:spawn({
})
mobs:register_egg("mobs_monster:zombie", "Zombie Head", "zombie_head.png", 0)
-- compatibility
mobs:alias_mob("mobs:zombie", "mobs_monster:zombie")
mobs:alias_mob("mobs:rotten_flesh", "mobs_monster:rotten_flesh")
-- rotten flesh
minetest.register_craftitem("mobs_monster:rotten_flesh", {
description = "Rotten Flesh",
inventory_image = "mobs_rotten_flesh.png",
on_use = minetest.item_eat(1),
})

View File

@ -15,7 +15,6 @@ function mobs.is_creative(name)
return creative_cache or minetest.check_player_privs(name, {creative = true})
end
-- localize math functions
local pi = math.pi
local square = math.sqrt
@ -687,9 +686,9 @@ function mob_class:item_drop()
for n = 1, #self.drops do
if random(1, self.drops[n].chance) == 1 then
if random(1, self.drops[n].chance or 1) == 1 then
num = random(self.drops[n].min or 0, self.drops[n].max or 1)
num = random(self.drops[n].min or 1, self.drops[n].max or 1)
item = self.drops[n].name
-- cook items on a hot death
@ -3797,7 +3796,10 @@ local function throw_spawn_egg(itemstack, user, pointed_thing)
textures = {def.inventory_image},
})
end
itemstack:take_item()
if not mobs.is_creative(user) or
not minetest.is_singleplayer() then
itemstack:take_item()
end
end
return itemstack
end
@ -3817,7 +3819,6 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative)
end
local invimg = background
if addegg == 1 then
invimg = "(" .. invimg ..
"^[mask:mobs_egg_overlay.png)"
@ -3873,8 +3874,8 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative)
if spawn_mob(pos, mob, itemstack:get_metadata(), placer) then
-- if not in creative then take item and minimal protection
-- against creating a large number of mobs on the server
if not mobs.is_creative(placer:get_player_name()) or
not minetest.is_singleplayer() then
if not mobs.is_creative(placer) or
not minetest.is_singleplayer() then
itemstack:take_item()
end
end
@ -4230,9 +4231,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
-- if not in creative then take item
if not mobs.is_creative(name) then
mob_sta[name]:take_item()
player:set_wielded_item(mob_sta[name])
end

View File

@ -95,12 +95,6 @@ minetest.register_craftitem("mobs:rabbit_hide", {
groups = {flammable = 2},
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:rabbit_hide",
burntime = 2,
})
minetest.register_craft({
output = "mobs:leather",
type = "shapeless",
@ -110,6 +104,100 @@ minetest.register_craft({
}
})
-- fried egg
minetest.register_craftitem("mobs:chicken_egg_fried", {
description = "Fried Egg",
inventory_image = "mobs_chicken_egg_fried.png",
on_use = minetest.item_eat(2),
groups = {flammable = 2},
})
minetest.register_craft({
type = "cooking",
recipe = "mobs:chicken_egg",
output = "mobs:chicken_egg_fried",
})
-- raw chicken
minetest.register_craftitem("mobs:chicken_raw", {
description = "Raw Chicken",
inventory_image = "mobs_chicken_raw.png",
on_use = minetest.item_eat(2),
groups = {food_meat_raw = 1, food_chicken_raw = 1, flammable = 2},
})
-- cooked chicken
minetest.register_craftitem("mobs:chicken_cooked", {
description = "Cooked Chicken",
inventory_image = "mobs_chicken_cooked.png",
on_use = minetest.item_eat(6),
groups = {food_meat = 1, food_chicken = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
recipe = "mobs:chicken_raw",
output = "mobs:chicken_cooked",
})
-- bucket of milk
minetest.register_craftitem("mobs:bucket_milk", {
description = "Bucket of Milk",
inventory_image = "mobs_bucket_milk.png",
stack_max = 1,
on_use = minetest.item_eat(8, "bucket:bucket_empty"),
groups = {food_milk = 1, flammable = 3},
})
-- cheese wedge
minetest.register_craftitem("mobs:cheese", {
description = "Cheese",
inventory_image = "mobs_cheese.png",
on_use = minetest.item_eat(4),
groups = {food_cheese = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
output = "mobs:cheese",
recipe = "mobs:bucket_milk",
cooktime = 5,
replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}}
})
-- cheese block
minetest.register_node("mobs:cheeseblock", {
description = "Cheese Block",
tiles = {"mobs_cheeseblock.png"},
is_ground_content = false,
groups = {crumbly = 3},
sounds = default.node_sound_dirt_defaults()
})
minetest.register_craft({
output = "mobs:cheeseblock",
recipe = {
{"mobs:cheese", "mobs:cheese", "mobs:cheese"},
{"mobs:cheese", "mobs:cheese", "mobs:cheese"},
{"mobs:cheese", "mobs:cheese", "mobs:cheese"},
}
})
minetest.register_craft({
output = "mobs:cheese 9",
recipe = {
{"mobs:cheeseblock"},
}
})
-- rotten flesh
minetest.register_craftitem("mobs:rotten_flesh", {
description = "Rotten Flesh",
inventory_image = "mobs_rotten_flesh.png",
on_use = minetest.item_eat(1),
})
minetest.register_alias("mobs_monster:rotten_flesh", "mobs:rotten_flesh")
minetest.register_alias("mobs:magic_lasso", "farming:string")
minetest.register_alias("mobs:lasso", "farming:string")
@ -121,14 +209,34 @@ minetest.register_tool("mobs:shears", {
})
minetest.register_craft({
output = 'mobs:shears',
output = "mobs:shears",
recipe = {
{'', 'default:steel_ingot', ''},
{'', 'group:stick', 'default:steel_ingot'},
{"", "default:steel_ingot", ""},
{"", "group:stick", "default:steel_ingot"},
}
})
-- protection rune
-- cobweb
minetest.register_node("mobs:cobweb", {
description = "Cobweb",
drawtype = "plantlike",
visual_scale = 1.2,
tiles = {"mobs_cobweb.png"},
inventory_image = "mobs_cobweb.png",
paramtype = "light",
sunlight_propagates = true,
liquid_viscosity = 7,
liquidtype = "source",
liquid_alternative_flowing = "mobs:cobweb",
liquid_alternative_source = "mobs:cobweb",
liquid_renewable = false,
liquid_range = 0,
walkable = false,
groups = {snappy = 1, disable_jump = 1, speed = -30},
sounds = default.node_sound_leaves_defaults(),
})
-- protection item
minetest.register_craftitem("mobs:protector", {
description = "Mob Protection Rune",
inventory_image = "mobs_protector.png",
@ -151,14 +259,15 @@ minetest.register_craft({
burntime = 3,
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:lasso",
burntime = 7,
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:leather",
burntime = 4,
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:rabbit_hide",
burntime = 2,
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B

View File

Before

Width:  |  Height:  |  Size: 238 B

After

Width:  |  Height:  |  Size: 238 B

View File

Before

Width:  |  Height:  |  Size: 578 B

After

Width:  |  Height:  |  Size: 578 B

View File

Before

Width:  |  Height:  |  Size: 326 B

After

Width:  |  Height:  |  Size: 326 B

View File

Before

Width:  |  Height:  |  Size: 161 B

After

Width:  |  Height:  |  Size: 161 B

View File

Before

Width:  |  Height:  |  Size: 400 B

After

Width:  |  Height:  |  Size: 400 B

View File

Before

Width:  |  Height:  |  Size: 620 B

After

Width:  |  Height:  |  Size: 620 B

View File

Before

Width:  |  Height:  |  Size: 315 B

After

Width:  |  Height:  |  Size: 315 B

View File

@ -66,7 +66,8 @@ local stair_place = function(itemstack, placer, pointed_thing, stair_node)
minetest.set_node(pos_a, {name = stair_node, param2 = node_u.param2})
if not is_creative_enabled_for(name) then
if not (creative and creative.is_enabled_for and
creative.is_enabled_for(name)) then
itemstack:take_item()
end

View File

@ -287,7 +287,7 @@ void set_default_settings(Settings *settings)
settings->setDefault("show_statusline_on_connect", "true");
settings->setDefault("enable_damage", "true");
settings->setDefault("default_password", "");
settings->setDefault("default_privs", "interact, shout, home");
settings->setDefault("default_privs", "interact, shout");
settings->setDefault("enable_pvp", "true");
settings->setDefault("disallow_empty_password", "false");
settings->setDefault("disable_anticheat", "false");