mirror of
https://codeberg.org/tenplus1/mobs_redo.git
synced 2025-08-19 15:50:29 +02:00
Compare commits
3 Commits
db3831dccf
...
9f46182bb4
Author | SHA1 | Date | |
---|---|---|---|
9f46182bb4 | |||
2535b5636e | |||
2d014a75c4 |
21
api.lua
21
api.lua
@ -8,7 +8,7 @@ local use_cmi = minetest.global_exists("cmi")
|
|||||||
|
|
||||||
mobs = {
|
mobs = {
|
||||||
mod = "redo",
|
mod = "redo",
|
||||||
version = "20210714",
|
version = "20210722",
|
||||||
intllib = S,
|
intllib = S,
|
||||||
invis = minetest.global_exists("invisibility") and invisibility or {}
|
invis = minetest.global_exists("invisibility") and invisibility or {}
|
||||||
}
|
}
|
||||||
@ -83,7 +83,7 @@ local aoc_range = tonumber(settings:get("active_block_range")) * 16
|
|||||||
-- pathfinding settings
|
-- pathfinding settings
|
||||||
local enable_pathfinding = true
|
local enable_pathfinding = true
|
||||||
local stuck_timeout = 3 -- how long before stuck mod starts searching
|
local stuck_timeout = 3 -- how long before stuck mod starts searching
|
||||||
local stuck_path_timeout = 10 -- how long will mob follow path before giving up
|
local stuck_path_timeout = 5 -- how long will mob follow path before giving up
|
||||||
|
|
||||||
-- default nodes
|
-- default nodes
|
||||||
local node_fire = "fire:basic_flame"
|
local node_fire = "fire:basic_flame"
|
||||||
@ -274,7 +274,9 @@ function mob_class:set_velocity(v)
|
|||||||
-- halt mob if it has been ordered to stay
|
-- halt mob if it has been ordered to stay
|
||||||
if self.order == "stand" then
|
if self.order == "stand" then
|
||||||
|
|
||||||
self.object:set_velocity({x = 0, y = self.fall_speed, z = 0})
|
local vel = self.object:get_velocity() or {y = 0}
|
||||||
|
|
||||||
|
self.object:set_velocity({x = 0, y = vel.y, z = 0})
|
||||||
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@ -1652,6 +1654,8 @@ local can_dig_drop = function(pos)
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local pathfinder_mod = minetest.get_modpath("pathfinder")
|
||||||
-- path finding and smart mob routine by rnd,
|
-- path finding and smart mob routine by rnd,
|
||||||
-- line_of_sight and other edits by Elkien3
|
-- line_of_sight and other edits by Elkien3
|
||||||
function mob_class:smart_mobs(s, p, dist, dtime)
|
function mob_class:smart_mobs(s, p, dist, dtime)
|
||||||
@ -1780,13 +1784,18 @@ function mob_class:smart_mobs(s, p, dist, dtime)
|
|||||||
jumpheight = 1
|
jumpheight = 1
|
||||||
end
|
end
|
||||||
|
|
||||||
self.path.way = minetest.find_path(s, p1, 16, jumpheight,
|
if pathfinder_mod then
|
||||||
dropheight, "Dijkstra")
|
self.path.way = pathfinder.find_path(s, p1, self, dtime)
|
||||||
|
else
|
||||||
|
self.path.way = minetest.find_path(s, p1, 16, jumpheight,
|
||||||
|
dropheight, "Dijkstra")
|
||||||
|
end
|
||||||
--[[
|
--[[
|
||||||
-- show path using particles
|
-- show path using particles
|
||||||
if self.path.way and #self.path.way > 0 then
|
if self.path.way and #self.path.way > 0 then
|
||||||
|
|
||||||
print("-- path length:" .. tonumber(#self.path.way))
|
print("-- path length:" .. tonumber(#self.path.way))
|
||||||
|
|
||||||
for _,pos in pairs(self.path.way) do
|
for _,pos in pairs(self.path.way) do
|
||||||
minetest.add_particle({
|
minetest.add_particle({
|
||||||
pos = pos,
|
pos = pos,
|
||||||
|
10
crafts.lua
10
crafts.lua
@ -10,7 +10,6 @@ minetest.register_craftitem("mobs:nametag", {
|
|||||||
|
|
||||||
if minetest.get_modpath("dye") and minetest.get_modpath("farming") then
|
if minetest.get_modpath("dye") and minetest.get_modpath("farming") then
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
-- type = "shapeless",
|
|
||||||
output = "mobs:nametag",
|
output = "mobs:nametag",
|
||||||
recipe = {{"default:paper", "dye:black", "farming:string"}}
|
recipe = {{"default:paper", "dye:black", "farming:string"}}
|
||||||
})
|
})
|
||||||
@ -149,7 +148,7 @@ minetest.register_craft({
|
|||||||
|
|
||||||
|
|
||||||
-- make sure we can register fences
|
-- make sure we can register fences
|
||||||
if default.register_fence then
|
if minetest.get_modpath("default") and default.register_fence then
|
||||||
|
|
||||||
-- mob fence (looks like normal fence but collision is 2 high)
|
-- mob fence (looks like normal fence but collision is 2 high)
|
||||||
default.register_fence("mobs:fence_wood", {
|
default.register_fence("mobs:fence_wood", {
|
||||||
@ -165,6 +164,7 @@ default.register_fence("mobs:fence_wood", {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
end
|
||||||
|
|
||||||
-- mob fence top (has enlarged collisionbox to stop mobs getting over)
|
-- mob fence top (has enlarged collisionbox to stop mobs getting over)
|
||||||
minetest.register_node("mobs:fence_top", {
|
minetest.register_node("mobs:fence_top", {
|
||||||
@ -197,8 +197,6 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
-- items that can be used as fuel
|
-- items that can be used as fuel
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
@ -361,9 +359,9 @@ minetest.register_node("mobs:meatblock", {
|
|||||||
tiles = {"mobs_meat_top.png", "mobs_meat_bottom.png", "mobs_meat_side.png"},
|
tiles = {"mobs_meat_top.png", "mobs_meat_bottom.png", "mobs_meat_side.png"},
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {choppy = 1, oddly_breakable_by_hand = 1, flammable = 2},
|
groups = {choppy = 1, oddly_breakable_by_hand = 1, flammable = 2},
|
||||||
sounds = default.node_sound_leaves_defaults(),
|
sounds = default and default.node_sound_leaves_defaults(),
|
||||||
on_place = minetest.rotate_node,
|
on_place = minetest.rotate_node,
|
||||||
on_use = minetest.item_eat(20),
|
on_use = minetest.item_eat(20)
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
default
|
default?
|
||||||
tnt?
|
tnt?
|
||||||
dye?
|
dye?
|
||||||
farming?
|
farming?
|
||||||
@ -7,3 +7,4 @@ intllib?
|
|||||||
lucky_block?
|
lucky_block?
|
||||||
cmi?
|
cmi?
|
||||||
toolranks?
|
toolranks?
|
||||||
|
pathfinder?
|
||||||
|
4
mod.conf
4
mod.conf
@ -1,4 +1,4 @@
|
|||||||
name = mobs
|
name = mobs
|
||||||
depends = default
|
depends =
|
||||||
optional_depends = tnt, dye, farming, invisibility, intllib, lucky_block, cmi, toolranks
|
optional_depends = default, tnt, dye, farming, invisibility, intllib, lucky_block, cmi, toolranks, pathfinder
|
||||||
description = Adds a mob api for mods to add animals or monsters etc.
|
description = Adds a mob api for mods to add animals or monsters etc.
|
||||||
|
@ -23,7 +23,7 @@ Lucky Blocks: 9
|
|||||||
|
|
||||||
|
|
||||||
Changelog:
|
Changelog:
|
||||||
- 1.55 - Add 'peaceful_player' privelage and setting so mobs don't attack specific players (thanks sfence)
|
- 1.55 - Add 'peaceful_player' privelage and setting so mobs don't attack specific players (thanks sfence), add support for MarkBu's pathfinder mod, remove need for default mod
|
||||||
- 1.54 - Simplified animal breeding function, added editable settings (thanks Wuzzy), Child mobs now take 20 mins to grow up, reverted to simple mob spawning with setting to use area checks, on_flop added, air_damage added.
|
- 1.54 - Simplified animal breeding function, added editable settings (thanks Wuzzy), Child mobs now take 20 mins to grow up, reverted to simple mob spawning with setting to use area checks, on_flop added, air_damage added.
|
||||||
- 1.53 - Added 'on_map_load' settings to mobs:spawn so that mobs will only spawn when new areas of map are loaded.
|
- 1.53 - Added 'on_map_load' settings to mobs:spawn so that mobs will only spawn when new areas of map are loaded.
|
||||||
- 1.52 - Added 'mob_active_limit' in settings to set number of mobs in game,
|
- 1.52 - Added 'mob_active_limit' in settings to set number of mobs in game,
|
||||||
|
Reference in New Issue
Block a user