mirror of
https://git.minetest.land/MineClone2/MineClone2.git
synced 2024-11-23 03:13:46 +01:00
Rebranding of the mobs redo mod
parent
9afe5da7b4
commit
4be664ab49
@ -1,9 +1,9 @@
|
||||
|
||||
-- Mobs Api
|
||||
-- API for Mobs Redo: MineClone 2 Edition (MRM)
|
||||
|
||||
mobs = {}
|
||||
mobs.mod = "redo"
|
||||
mobs.version = "20180523"
|
||||
mobs.mod = "mrm"
|
||||
mobs.version = "20180531" -- don't rely too much on this, rarely updated, if ever
|
||||
|
||||
local MAX_MOB_NAME_LENGTH = 30
|
||||
|
||||
@ -354,24 +354,6 @@ end
|
||||
|
||||
|
||||
local update_tag = function(self)
|
||||
--DISABLED IN MCL2
|
||||
--[=[
|
||||
local col = "#00FF00"
|
||||
local qua = self.hp_max / 4
|
||||
|
||||
if self.health <= floor(qua * 3) then
|
||||
col = "#FFFF00"
|
||||
end
|
||||
|
||||
if self.health <= floor(qua * 2) then
|
||||
col = "#FF6600"
|
||||
end
|
||||
|
||||
if self.health <= floor(qua) then
|
||||
col = "#FF0000"
|
||||
end
|
||||
]=]
|
||||
|
||||
self.object:set_properties({
|
||||
nametag = self.nametag,
|
||||
})
|
||||
@ -3519,55 +3501,6 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative)
|
||||
"^[mask:mobs_chicken_egg_overlay.png)"
|
||||
end
|
||||
|
||||
-- register new spawn egg containing mob information
|
||||
--[=[ DISABLED IN MCL2
|
||||
minetest.register_craftitem(mob .. "_set", {
|
||||
|
||||
description = S("@1 (Tamed)", desc),
|
||||
inventory_image = invimg,
|
||||
groups = {spawn_egg = 2, not_in_creative_inventory = 1},
|
||||
stack_max = 1,
|
||||
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
|
||||
local pos = pointed_thing.above
|
||||
|
||||
-- am I clicking on something with existing on_rightclick function?
|
||||
local under = minetest.get_node(pointed_thing.under)
|
||||
local def = minetest.registered_nodes[under.name]
|
||||
if def and def.on_rightclick then
|
||||
return def.on_rightclick(pointed_thing.under, under, placer, itemstack)
|
||||
end
|
||||
|
||||
if pos
|
||||
and within_limits(pos, 0)
|
||||
and not minetest.is_protected(pos, placer:get_player_name()) then
|
||||
|
||||
if not minetest.registered_entities[mob] then
|
||||
return
|
||||
end
|
||||
|
||||
pos.y = pos.y + 1
|
||||
|
||||
local data = itemstack:get_metadata()
|
||||
local mob = minetest.add_entity(pos, mob, data)
|
||||
local ent = mob:get_luaentity()
|
||||
|
||||
-- set owner if not a monster
|
||||
if ent.type ~= "monster" then
|
||||
ent.owner = placer:get_player_name()
|
||||
ent.tamed = true
|
||||
end
|
||||
|
||||
-- since mob is unique we remove egg once spawned
|
||||
itemstack:take_item()
|
||||
end
|
||||
|
||||
return itemstack
|
||||
end,
|
||||
})
|
||||
]=]
|
||||
|
||||
-- register old stackable mob egg
|
||||
minetest.register_craftitem(mob, {
|
||||
|
||||
@ -3646,127 +3579,10 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative)
|
||||
end
|
||||
|
||||
|
||||
-- capture critter (thanks to blert2112 for idea)
|
||||
-- No-op in MCL2 (capturing mobs is not possible).
|
||||
-- Provided for compability with Mobs Redo
|
||||
function mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso, force_take, replacewith)
|
||||
return false
|
||||
--[=[ DISABLED IN MCL2
|
||||
if self.child
|
||||
or not clicker:is_player()
|
||||
or not clicker:get_inventory() then
|
||||
return false
|
||||
end
|
||||
|
||||
-- get name of clicked mob
|
||||
local mobname = self.name
|
||||
|
||||
-- if not nil change what will be added to inventory
|
||||
if replacewith then
|
||||
mobname = replacewith
|
||||
end
|
||||
|
||||
local name = clicker:get_player_name()
|
||||
local tool = clicker:get_wielded_item()
|
||||
|
||||
-- are we using hand, net or lasso to pick up mob?
|
||||
if tool:get_name() ~= ""
|
||||
and tool:get_name() ~= "mobs:net"
|
||||
and tool:get_name() ~= "mobs:lasso" then
|
||||
return false
|
||||
end
|
||||
|
||||
-- is mob tamed?
|
||||
if self.tamed == false
|
||||
and force_take == false then
|
||||
|
||||
minetest.chat_send_player(name, S("Not tamed!"))
|
||||
|
||||
return true -- false
|
||||
end
|
||||
|
||||
-- cannot pick up if not owner
|
||||
if self.owner ~= name
|
||||
and force_take == false then
|
||||
|
||||
minetest.chat_send_player(name, S("@1 is owner!", self.owner))
|
||||
|
||||
return true -- false
|
||||
end
|
||||
|
||||
if clicker:get_inventory():room_for_item("main", mobname) then
|
||||
|
||||
-- was mob clicked with hand, net, or lasso?
|
||||
local chance = 0
|
||||
|
||||
if tool:get_name() == "" then
|
||||
chance = chance_hand
|
||||
|
||||
elseif tool:get_name() == "mobs:net" then
|
||||
|
||||
chance = chance_net
|
||||
|
||||
tool:add_wear(4000) -- 17 uses
|
||||
|
||||
clicker:set_wielded_item(tool)
|
||||
|
||||
elseif tool:get_name() == "mobs:lasso" then
|
||||
|
||||
chance = chance_lasso
|
||||
|
||||
tool:add_wear(650) -- 100 uses
|
||||
|
||||
clicker:set_wielded_item(tool)
|
||||
|
||||
end
|
||||
|
||||
-- calculate chance.. add to inventory if successful?
|
||||
if chance > 0 and random(1, 100) <= chance then
|
||||
|
||||
-- default mob egg
|
||||
local new_stack = ItemStack(mobname)
|
||||
|
||||
-- add special mob egg with all mob information
|
||||
-- unless 'replacewith' contains new item to use
|
||||
if not replacewith then
|
||||
|
||||
new_stack = ItemStack(mobname .. "_set")
|
||||
|
||||
local tmp = {}
|
||||
|
||||
for _,stat in pairs(self) do
|
||||
local t = type(stat)
|
||||
if t ~= "function"
|
||||
and t ~= "nil"
|
||||
and t ~= "userdata" then
|
||||
tmp[_] = self[_]
|
||||
end
|
||||
end
|
||||
|
||||
local data_str = minetest.serialize(tmp)
|
||||
|
||||
new_stack:set_metadata(data_str)
|
||||
end
|
||||
|
||||
local inv = clicker:get_inventory()
|
||||
|
||||
if inv:room_for_item("main", new_stack) then
|
||||
inv:add_item("main", new_stack)
|
||||
else
|
||||
minetest.add_item(clicker:get_pos(), new_stack)
|
||||
end
|
||||
|
||||
self.object:remove()
|
||||
|
||||
mob_sound(self, "default_place_node_hard")
|
||||
|
||||
elseif chance ~= 0 then
|
||||
minetest.chat_send_player(name, S("Missed!"))
|
||||
|
||||
mob_sound(self, "mobs_swing")
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
]=]
|
||||
end
|
||||
|
||||
|
||||
@ -3837,12 +3653,6 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame)
|
||||
self.health = self.hp_max
|
||||
|
||||
if self.htimer < 1 then
|
||||
-- DISABLED IN MCL2
|
||||
--[=[
|
||||
minetest.chat_send_player(clicker:get_player_name(),
|
||||
S("@1 at full health (@2)",
|
||||
self.name:split(":")[2], tostring(self.health)))
|
||||
]=]
|
||||
self.htimer = 5
|
||||
end
|
||||
end
|
||||
@ -3873,14 +3683,6 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame)
|
||||
|
||||
if tame then
|
||||
|
||||
if self.tamed == false then
|
||||
--[[ DISABLED IN MCL2
|
||||
minetest.chat_send_player(clicker:get_player_name(),
|
||||
S("@1 has been tamed!",
|
||||
self.name:split(":")[2]))
|
||||
]]
|
||||
end
|
||||
|
||||
self.tamed = true
|
||||
|
||||
if not self.owner or self.owner == "" then
|
||||
@ -3945,56 +3747,6 @@ function mobs:spawn_child(pos, mob_type)
|
||||
end
|
||||
|
||||
|
||||
-- DISABLED IN MCL2
|
||||
--[=[
|
||||
-- inspired by blockmen's nametag mod
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
|
||||
-- right-clicked with nametag and name entered?
|
||||
if formname == "mobs_nametag"
|
||||
and fields.name
|
||||
and fields.name ~= "" then
|
||||
|
||||
local name = player:get_player_name()
|
||||
|
||||
if not mob_obj[name]
|
||||
or not mob_obj[name].object then
|
||||
return
|
||||
end
|
||||
|
||||
-- make sure nametag is being used to name mob
|
||||
local item = player:get_wielded_item()
|
||||
|
||||
if item:get_name() ~= "mobs:nametag" then
|
||||
return
|
||||
end
|
||||
|
||||
-- limit name entered to 64 characters long
|
||||
if string.len(fields.name) > 64 then
|
||||
fields.name = string.sub(fields.name, 1, 64)
|
||||
end
|
||||
|
||||
-- update nametag
|
||||
mob_obj[name].nametag = fields.name
|
||||
|
||||
update_tag(mob_obj[name])
|
||||
|
||||
-- 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
|
||||
|
||||
-- reset external variables
|
||||
mob_obj[name] = nil
|
||||
mob_sta[name] = nil
|
||||
end
|
||||
end)
|
||||
]=]
|
||||
|
||||
|
||||
-- compatibility function for old entities to new modpack entities
|
||||
function mobs:alias_mob(old_name, new_name)
|
||||
|
||||
|
@ -1,8 +1,9 @@
|
||||
|
||||
Mobs Redo API
|
||||
=============
|
||||
Mobs Redo: MineClone 2 Edition
|
||||
API documentation
|
||||
==============================
|
||||
|
||||
Welcome to the world of mobs in minetest and hopefully an easy guide to defining
|
||||
Welcome to the world of mobs in Minetest and hopefully an easy guide to defining
|
||||
your own mobs and having them appear in your worlds.
|
||||
|
||||
|
||||
@ -437,27 +438,20 @@ and damages any entity caught inside the blast radius. Protection will limit
|
||||
node destruction but not entity damage.
|
||||
|
||||
|
||||
Capturing Mobs
|
||||
--------------
|
||||
mobs:capture_mob
|
||||
----------------
|
||||
|
||||
mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso,
|
||||
force_take, replacewith)
|
||||
mobs:capture_mob(...)
|
||||
|
||||
This function is generally called inside the on_rightclick section of the mob
|
||||
api code, it provides a chance of capturing the mob by hand, using the net or
|
||||
lasso items, and can also have the player take the mob by force if tamed and
|
||||
replace with another item entirely.
|
||||
Does nothing and returns false.
|
||||
|
||||
'self' mob information
|
||||
'clicker' player information
|
||||
'chance_hand' chance of capturing mob by hand (1 to 100) 0 to disable
|
||||
'chance_net' chance of capturing mob using net (1 to 100) 0 to disable
|
||||
'chance_lasso' chance of capturing mob using magic lasso (1 to 100) 0 to
|
||||
disable
|
||||
'force_take' take mob by force, even if tamed (true or false)
|
||||
'replacewith' once captured replace mob with this item instead (overrides
|
||||
new mob eggs with saved information)
|
||||
This function is provided for compability with Mobs Redo for an attempt to
|
||||
capture a mob.
|
||||
Mobs cannot be captured in MineClone 2.
|
||||
|
||||
In Mobs Redo, this is generally called inside the on_rightclick section of the mob
|
||||
api code, it provides a chance of capturing the mob. See Mobs Redo documentation
|
||||
of parameters.
|
||||
|
||||
Feeding and Taming/Breeding
|
||||
---------------------------
|
||||
|
@ -1,6 +1,7 @@
|
||||
|
||||
MOBS REDO for MINETEST
|
||||
Mobs Redo: MineClone 2 Edition
|
||||
|
||||
Based on Mobs Redo from TenPlus1
|
||||
Built from PilzAdam's original Simple Mobs with additional mobs by KrupnoPavel, Zeg9, ExeterDad and AspireMint.
|
||||
|
||||
|
||||
@ -10,18 +11,14 @@ This mod contains the API only for adding your own mobs into the world, so pleas
|
||||
https://forum.minetest.net/viewtopic.php?f=11&t=9917
|
||||
|
||||
|
||||
Crafts:
|
||||
Items:
|
||||
|
||||
- Nametag (paper, black dye, string) can be used right-click on a tamed mob to give them a name.
|
||||
- Nets can be used to right-click tamed mobs to pick them up and place inside inventory as a spawn egg.
|
||||
- Magic Lasso is similar to nets but with a better chance of picking up larger mobs.
|
||||
- Shears are used to right-click sheep and return 1-3 wool.
|
||||
- Protection Rune lets you protect tamed mobs from harm by other players
|
||||
- Nametag (paper, black dye, string) can be used right-click on a tamed mob to give them a name.
|
||||
|
||||
Lucky Blocks: 9
|
||||
|
||||
|
||||
Changelog:
|
||||
Changelog from original Mobs Redo mod:
|
||||
- 1.41- Mob pathfinding has been updated thanks to Elkien3
|
||||
- 1.40- Updated to use newer functions, requires Minetest 0.4.16+ to work.
|
||||
- 1.39- Added 'on_breed', 'on_grown' and 'do_punch' custom functions per mob
|
||||
|
Loading…
Reference in New Issue
Block a user