forked from VoxeLibre/VoxeLibre
Convert flying bobber to vl_projectile, modify mcl_throwing.register_throwable_object() to check for _vl_projectile field
This commit is contained in:
parent
b904204c78
commit
74882d2bbf
|
@ -312,7 +312,7 @@ bobber_ENTITY.on_step = bobber_on_step
|
|||
|
||||
minetest.register_entity("mcl_fishing:bobber_entity", bobber_ENTITY)
|
||||
|
||||
local flying_bobber_ENTITY={
|
||||
vl_projectile.register("mcl_fishing:flying_bobber_entity", {
|
||||
physical = false,
|
||||
timer=0,
|
||||
textures = {"mcl_fishing_bobber.png"}, --FIXME: Replace with correct texture.
|
||||
|
@ -323,35 +323,35 @@ local flying_bobber_ENTITY={
|
|||
get_staticdata = mcl_throwing.get_staticdata,
|
||||
on_activate = mcl_throwing.on_activate,
|
||||
|
||||
_vl_projectile = {
|
||||
behaviors = {
|
||||
vl_projectile.collides_with_solids,
|
||||
},
|
||||
collides_with = { "group:liquid" },
|
||||
on_collide_with_solid = function(self, pos, node)
|
||||
if not self._last_pos then return end
|
||||
|
||||
local last_pos = self._last_pos
|
||||
local player = self._owner
|
||||
|
||||
self._remove = true
|
||||
self.object:remove()
|
||||
|
||||
local def = minetest.registered_nodes[node.name]
|
||||
if not def then return end
|
||||
|
||||
if def.walkable or def.liquidtype == "flowing" or def.liquidtype == "source" then
|
||||
local ent = minetest.add_entity(last_pos, "mcl_fishing:bobber_entity"):get_luaentity()
|
||||
ent.player = player
|
||||
ent.child = true
|
||||
end
|
||||
end
|
||||
},
|
||||
|
||||
_lastpos={},
|
||||
_thrower = nil,
|
||||
objtype="fishing",
|
||||
}
|
||||
|
||||
-- Movement function of flying bobber
|
||||
local function flying_bobber_on_step(self, dtime)
|
||||
self.timer=self.timer+dtime
|
||||
local pos = self.object:get_pos()
|
||||
local node = minetest.get_node(pos)
|
||||
local def = minetest.registered_nodes[node.name]
|
||||
--local player = minetest.get_player_by_name(self._thrower)
|
||||
|
||||
-- Destroy when hitting a solid node
|
||||
if self._lastpos.x~=nil then
|
||||
if (def and (def.walkable or def.liquidtype == "flowing" or def.liquidtype == "source")) or not def then
|
||||
local ent = minetest.add_entity(self._lastpos, "mcl_fishing:bobber_entity"):get_luaentity()
|
||||
ent.player = self._thrower
|
||||
ent.child = true
|
||||
self.object:remove()
|
||||
return
|
||||
end
|
||||
end
|
||||
self._lastpos={x=pos.x, y=pos.y, z=pos.z} -- Set lastpos-->Node will be added at last pos outside the node
|
||||
end
|
||||
|
||||
flying_bobber_ENTITY.on_step = flying_bobber_on_step
|
||||
|
||||
minetest.register_entity("mcl_fishing:flying_bobber_entity", flying_bobber_ENTITY)
|
||||
})
|
||||
|
||||
mcl_throwing.register_throwable_object("mcl_fishing:flying_bobber", "mcl_fishing:flying_bobber_entity", 5)
|
||||
|
||||
|
|
|
@ -17,7 +17,6 @@ minetest.register_craftitem("mcl_throwing:egg", {
|
|||
_on_dispense = mcl_throwing.dispense_function,
|
||||
groups = { craftitem = 1 },
|
||||
})
|
||||
mcl_throwing.register_throwable_object("mcl_throwing:egg", "mcl_throwing:egg_entity", 22)
|
||||
|
||||
minetest.register_entity("mcl_throwing:egg_entity",{
|
||||
physical = false,
|
||||
|
@ -60,4 +59,5 @@ minetest.register_entity("mcl_throwing:egg_entity",{
|
|||
},
|
||||
},
|
||||
})
|
||||
mcl_throwing.register_throwable_object("mcl_throwing:egg", "mcl_throwing:egg_entity", 22)
|
||||
|
||||
|
|
|
@ -20,7 +20,6 @@ minetest.register_craftitem("mcl_throwing:ender_pearl", {
|
|||
on_use = mcl_throwing.get_player_throw_function("mcl_throwing:ender_pearl_entity"),
|
||||
groups = { transport = 1 },
|
||||
})
|
||||
mcl_throwing.register_throwable_object("mcl_throwing:ender_pearl", "mcl_throwing:ender_pearl_entity", 22)
|
||||
|
||||
-- Ender pearl entity
|
||||
vl_projectile.register("mcl_throwing:ender_pearl_entity",{
|
||||
|
@ -125,3 +124,5 @@ vl_projectile.register("mcl_throwing:ender_pearl_entity",{
|
|||
end
|
||||
},
|
||||
})
|
||||
mcl_throwing.register_throwable_object("mcl_throwing:ender_pearl", "mcl_throwing:ender_pearl_entity", 22)
|
||||
|
||||
|
|
|
@ -14,6 +14,8 @@ local velocities = {}
|
|||
function mcl_throwing.register_throwable_object(name, entity, velocity)
|
||||
entity_mapping[name] = entity
|
||||
velocities[name] = velocity
|
||||
assert(minetest.registered_entities[entity], entity.." not registered")
|
||||
assert(minetest.registered_entities[entity]._vl_projectile)
|
||||
end
|
||||
|
||||
function mcl_throwing.throw(throw_item, pos, dir, velocity, thrower)
|
||||
|
|
|
@ -16,7 +16,6 @@ minetest.register_craftitem("mcl_throwing:snowball", {
|
|||
on_use = mcl_throwing.get_player_throw_function("mcl_throwing:snowball_entity"),
|
||||
_on_dispense = mcl_throwing.dispense_function,
|
||||
})
|
||||
mcl_throwing.register_throwable_object("mcl_throwing:snowball", "mcl_throwing:snowball_entity", 22)
|
||||
|
||||
-- The snowball entity
|
||||
local function snowball_particles(pos, vel)
|
||||
|
@ -72,4 +71,5 @@ vl_projectile.register("mcl_throwing:snowball_entity", {
|
|||
damage_groups = { snowball_vulnerable = 3 },
|
||||
},
|
||||
})
|
||||
mcl_throwing.register_throwable_object("mcl_throwing:snowball", "mcl_throwing:snowball_entity", 22)
|
||||
|
||||
|
|
Loading…
Reference in New Issue