forked from Mineclonia/Mineclonia
Compare commits
3 Commits
master
...
fix-etable
Author | SHA1 | Date |
---|---|---|
cora | 6142453658 | |
cora | 6ca6da2da0 | |
cora | f432458ccc |
|
@ -149,19 +149,22 @@ minetest.register_craftitem("mcl_enchanting:book_enchanted", {
|
|||
minetest.register_alias("mcl_books:book_enchanted", "mcl_enchanting:book_enchanted")
|
||||
|
||||
local spawn_book_entity = function(pos, respawn)
|
||||
if respawn then
|
||||
-- Check if we already have a book
|
||||
local objs = minetest.get_objects_inside_radius(pos, 1)
|
||||
local cnt=0
|
||||
-- Check if we already have books within 5 nodes distance to avoid too many entities
|
||||
local objs = minetest.get_objects_inside_radius(pos, 5)
|
||||
for o=1, #objs do
|
||||
local obj = objs[o]
|
||||
local lua = obj:get_luaentity()
|
||||
if lua and lua.name == "mcl_enchanting:book" then
|
||||
if lua._table_pos and vector.equals(pos, lua._table_pos) then
|
||||
if respawn and lua._table_pos and vector.equals(pos, lua._table_pos) then
|
||||
return
|
||||
end
|
||||
cnt=cnt+1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if cnt > 10 then return end
|
||||
|
||||
local obj = minetest.add_entity(vector.add(pos, mcl_enchanting.book_offset), "mcl_enchanting:book")
|
||||
if obj then
|
||||
local lua = obj:get_luaentity()
|
||||
|
@ -192,8 +195,8 @@ minetest.register_entity("mcl_enchanting:book", {
|
|||
local old_player_near = self._player_near
|
||||
local player_near = false
|
||||
local player
|
||||
for _, obj in ipairs(minetest.get_objects_inside_radius(vector.subtract(self.object:get_pos(), mcl_enchanting.book_offset), 2.5)) do
|
||||
if obj:is_player() then
|
||||
for _,obj in pairs(minetest.get_connected_players()) do
|
||||
if vector.distance(obj:get_pos(),self.object:get_pos()) < 2.5 then
|
||||
player_near = true
|
||||
player = obj
|
||||
end
|
||||
|
@ -210,6 +213,13 @@ minetest.register_entity("mcl_enchanting:book", {
|
|||
end
|
||||
self._player_near = player_near
|
||||
mcl_enchanting.check_animation_schedule(self, dtime)
|
||||
|
||||
if self._table_pos then
|
||||
local tn=minetest.get_node_or_nil(self._table_pos)
|
||||
if tn and tn.name ~= "mcl_enchanting:table" then
|
||||
self.object:remove()
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
|
@ -309,8 +319,8 @@ minetest.register_abm({
|
|||
nodenames = "mcl_enchanting:table",
|
||||
action = function(pos)
|
||||
local playernames = {}
|
||||
for _, obj in ipairs(minetest.get_objects_inside_radius(pos, 15)) do
|
||||
if obj:is_player() then
|
||||
for _,obj in pairs(minetest.get_connected_players()) do
|
||||
if vector.distance(obj:get_pos(),pos) < 15 then
|
||||
table.insert(playernames, obj:get_player_name())
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue