swamp water buckets and trying to fix npc taming

This commit is contained in:
kaadmy 2015-10-03 14:02:14 -07:00
parent b1bb5c0c59
commit 1bf80dc6b6
8 changed files with 402 additions and 364 deletions

View File

@ -777,6 +777,39 @@ minetest.register_craftitem(
end end
}) })
minetest.register_craftitem(
"default:bucket_swamp_water",
{
description = "Swamp Water Bucket",
inventory_image = "default_bucket_swamp_water.png",
stack_max = 1,
wield_scale = {x=1,y=1,z=2},
liquids_pointable = true,
on_place = function(itemstack, user, pointed_thing)
if pointed_thing.type ~= "node" then return end
itemstack:take_item()
local inv=user:get_inventory()
if inv:room_for_item("main", {name="default:bucket"}) then
inv:add_item("main", "default:bucket")
else
local pos = user:getpos()
pos.y = math.floor(pos.y + 0.5)
minetest.add_item(pos, "default:bucket")
end
local pos = pointed_thing.above
if minetest.registered_nodes[minetest.get_node(pointed_thing.under).name].buildable_to then
pos=pointed_thing.under
end
minetest.add_node(pos, {name = "default:swamp_water_source"})
return itemstack
end
})
minetest.register_craftitem( minetest.register_craftitem(
"default:bucket", "default:bucket",
{ {
@ -817,6 +850,20 @@ minetest.register_craftitem(
minetest.add_item(pos, "default:bucket_river_water") minetest.add_item(pos, "default:bucket_river_water")
end end
minetest.remove_node(pointed_thing.under)
elseif nodename == "default:swamp_water_source" then
itemstack:take_item()
local inv=user:get_inventory()
if inv:room_for_item("main", {name="default:bucket_swamp_water"}) then
inv:add_item("main", "default:bucket_swamp_water")
else
local pos = user:getpos()
pos.y = math.floor(pos.y + 0.5)
minetest.add_item(pos, "default:bucket_swamp_water")
end
minetest.remove_node(pointed_thing.under) minetest.remove_node(pointed_thing.under)
end end

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 437 B

After

Width:  |  Height:  |  Size: 419 B

View File

@ -200,6 +200,8 @@ function gold.trade(trade, trade_type, player)
item:set_metadata(minetest.serialize(meta)) item:set_metadata(minetest.serialize(meta))
player:set_wielded_item(item) player:set_wielded_item(item)
return true
end end
minetest.register_on_player_receive_fields( minetest.register_on_player_receive_fields(

View File

@ -682,13 +682,8 @@ function mobs:register_mob(name, def)
self.object:setyaw(yaw) self.object:setyaw(yaw)
-- anyone but standing npc's can move along -- anyone but standing npc's can move along
if dist > 2 if dist > 2 and self.order ~= "stand" then
and self.order ~= "stand" then if (self.jump and self.get_velocity(self) <= 0.5 and self.object:getvelocity().y == 0) or (self.object:getvelocity().y == 0 and self.jump_chance > 0) then
if (self.jump
and self.get_velocity(self) <= 0.5
and self.object:getvelocity().y == 0)
or (self.object:getvelocity().y == 0
and self.jump_chance > 0) then
self.direction = { self.direction = {
x = math.sin(yaw) * -1, x = math.sin(yaw) * -1,
y = -20, y = -20,

Binary file not shown.

View File

@ -89,11 +89,15 @@ for _, npc_type in pairs(npc_types) do
clicker:set_wielded_item(item) clicker:set_wielded_item(item)
end end
-- right clicking trades, sneak+rightclick if owner changes order -- right clicking with trading book trades, else changes order if tame
-- trading is done in the gold mod -- trading is done in the gold mod
else else
-- if owner switch between follow and stand -- if owner switch between follow and stand
if clicker:get_player_control().sneak then if not self.npc_trade then
self.npc_trade = util.choice_element(gold.trades[self.npc_type], gold.pr)
end
if not gold.trade(self.npc_trade, self.npc_type, clicker) then
if self.owner and self.owner == clicker:get_player_name() then if self.owner and self.owner == clicker:get_player_name() then
if self.order == "follow" then if self.order == "follow" then
self.order = "stand" self.order = "stand"
@ -101,16 +105,6 @@ for _, npc_type in pairs(npc_types) do
self.order = "follow" self.order = "follow"
end end
end end
else
-- if not self.npc_type then
-- self.npc_type = util.choice_element(npc_types, gold.pr)
-- end
if not self.npc_trade then
self.npc_trade = util.choice_element(gold.trades[self.npc_type], gold.pr)
end
gold.trade(self.npc_trade, self.npc_type, clicker)
end end
end end