allow players to change owners of their animals with sneak+place

This commit is contained in:
Elkien3 2022-05-24 12:55:10 -05:00
parent 8758ffbe26
commit fb3c476907
6 changed files with 40 additions and 7 deletions

View File

@ -101,7 +101,11 @@ stepheight = 0.6,
-- Monty Python tribute -- Monty Python tribute
local item = clicker:get_wielded_item() local item = clicker:get_wielded_item()
if item:get_name() == "mobs:lava_orb" then local name = clicker:get_player_name()
if self.owner and name and self.owner == name and clicker:get_player_control().sneak then
minetest.show_formspec(name, "mobs_farm_changeowner", "size[5,2]field[1,1;4,1;changeowner;Change Owner;]field_close_on_enter[changeowner;false]")
mobs_farm.form[name] = self
elseif item:get_name() == "mobs:lava_orb" then
if not mobs.is_creative(clicker:get_player_name()) then if not mobs.is_creative(clicker:get_player_name()) then
item:take_item() item:take_item()

View File

@ -115,7 +115,12 @@ mobs:register_mob("mobs_farm:chicken", {
-- feed or tame -- feed or tame
if not self.tamed and mobs:feed_tame(self, clicker, 4, false, true) then return end if not self.tamed and mobs:feed_tame(self, clicker, 4, false, true) then return end
if mobs:feed_tame(self, clicker, 20, true, false) then return end if mobs:feed_tame(self, clicker, 20, true, false) then return end
local name = clicker:get_player_name()
if self.owner and name and self.owner == name and clicker:get_player_control().sneak then
minetest.show_formspec(name, "mobs_farm_changeowner", "size[5,2]field[1,1;4,1;changeowner;Change Owner;]field_close_on_enter[changeowner;false]")
mobs_farm.form[name] = self
end
--if mobs:protect(self, clicker) then return end --if mobs:protect(self, clicker) then return end
--if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end --if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end
end, end,

View File

@ -129,10 +129,13 @@ mobs:register_mob("mobs_farm:cow", {
--if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end --if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end
local tool = clicker:get_wielded_item() local tool = clicker:get_wielded_item()
local name = clicker:get_player_name()
-- milk cow with empty bucket -- milk cow with empty bucket
if tool:get_name() == "bucket:bucket_empty" then local name = clicker:get_player_name()
if self.owner and name and self.owner == name and clicker:get_player_control().sneak then
minetest.show_formspec(name, "mobs_farm_changeowner", "size[5,2]field[1,1;4,1;changeowner;Change Owner;]field_close_on_enter[changeowner;false]")
mobs_farm.form[name] = self
elseif tool:get_name() == "bucket:bucket_empty" then
if self.gotten == true if self.gotten == true
or self.child == true then or self.child == true then

View File

@ -247,5 +247,19 @@ if mobs.custom_spawn_animal then
dofile(path .. "spawn.lua") dofile(path .. "spawn.lua")
end end
mobs_farm.form = {}
minetest.register_on_player_receive_fields(function(player, formname, fields)
--minetest.show_formspec(name, "mobs_farm_changeowner", "size[5,2]field[1,1;4,1;changeowner;Change Owner;]")
if formname ~= "mobs_farm_changeowner" then return end
local name = player:get_player_name()
if not mobs_farm.form[name] then return true end
if fields.quit then mobs_farm.form[name] = nil return true end
if not mobs_farm.form[name].owner or mobs_farm.form[name].owner ~= name then return true end
if not minetest.player_exists(fields.changeowner) then return true end
mobs_farm.form[name].owner = fields.changeowner
mobs_farm.form[name] = nil
minetest.close_formspec(name, "mobs_farm_changeowner")
end)
print (S("[MOD] Mobs Redo Animals loaded")) print (S("[MOD] Mobs Redo Animals loaded"))

View File

@ -109,7 +109,11 @@ mobs:register_mob("mobs_farm:kitten", {
--if mobs:capture_mob(self, clicker, 50, 50, 90, false, nil) then return end --if mobs:capture_mob(self, clicker, 50, 50, 90, false, nil) then return end
-- by right-clicking owner can switch between staying and walking -- by right-clicking owner can switch between staying and walking
if self.owner and self.owner == clicker:get_player_name() then local name = clicker:get_player_name()
if self.owner and name and self.owner == name and clicker:get_player_control().sneak then
minetest.show_formspec(name, "mobs_farm_changeowner", "size[5,2]field[1,1;4,1;changeowner;Change Owner;]field_close_on_enter[changeowner;false]")
mobs_farm.form[name] = self
elseif self.owner and self.owner == clicker:get_player_name() then
if self.order ~= "stand" then if self.order ~= "stand" then
self.order = "stand" self.order = "stand"

View File

@ -262,8 +262,11 @@ dog.on_rightclick = function(self, clicker)
--if mobs:protect(self, clicker) then return end --if mobs:protect(self, clicker) then return end
--if item:get_name() ~= "" and mobs:capture_mob(self, clicker, 0, 2, 80, false, nil) then return end --if item:get_name() ~= "" and mobs:capture_mob(self, clicker, 0, 2, 80, false, nil) then return end
local name = clicker:get_player_name()
if false and item:get_name() == "mobs:meat_raw" then if self.owner and name and self.owner == name and clicker:get_player_control().sneak then
minetest.show_formspec(name, "mobs_farm_changeowner", "size[5,2]field[1,1;4,1;changeowner;Change Owner;]field_close_on_enter[changeowner;false]")
mobs_farm.form[name] = self
elseif false and item:get_name() == "mobs:meat_raw" then
-- Feed to increase health -- Feed to increase health
local hp = self.health local hp = self.health
local hp_add = 0 local hp_add = 0