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")
|
minetest.register_alias("mcl_books:book_enchanted", "mcl_enchanting:book_enchanted")
|
||||||
|
|
||||||
local spawn_book_entity = function(pos, respawn)
|
local spawn_book_entity = function(pos, respawn)
|
||||||
if respawn then
|
local cnt=0
|
||||||
-- Check if we already have a book
|
-- Check if we already have books within 5 nodes distance to avoid too many entities
|
||||||
local objs = minetest.get_objects_inside_radius(pos, 1)
|
local objs = minetest.get_objects_inside_radius(pos, 5)
|
||||||
for o=1, #objs do
|
for o=1, #objs do
|
||||||
local obj = objs[o]
|
local obj = objs[o]
|
||||||
local lua = obj:get_luaentity()
|
local lua = obj:get_luaentity()
|
||||||
if lua and lua.name == "mcl_enchanting:book" then
|
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
|
return
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
cnt=cnt+1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if cnt > 10 then return end
|
||||||
|
|
||||||
local obj = minetest.add_entity(vector.add(pos, mcl_enchanting.book_offset), "mcl_enchanting:book")
|
local obj = minetest.add_entity(vector.add(pos, mcl_enchanting.book_offset), "mcl_enchanting:book")
|
||||||
if obj then
|
if obj then
|
||||||
local lua = obj:get_luaentity()
|
local lua = obj:get_luaentity()
|
||||||
|
@ -192,8 +195,8 @@ minetest.register_entity("mcl_enchanting:book", {
|
||||||
local old_player_near = self._player_near
|
local old_player_near = self._player_near
|
||||||
local player_near = false
|
local player_near = false
|
||||||
local player
|
local player
|
||||||
for _, obj in ipairs(minetest.get_objects_inside_radius(vector.subtract(self.object:get_pos(), mcl_enchanting.book_offset), 2.5)) do
|
for _,obj in pairs(minetest.get_connected_players()) do
|
||||||
if obj:is_player() then
|
if vector.distance(obj:get_pos(),self.object:get_pos()) < 2.5 then
|
||||||
player_near = true
|
player_near = true
|
||||||
player = obj
|
player = obj
|
||||||
end
|
end
|
||||||
|
@ -210,6 +213,13 @@ minetest.register_entity("mcl_enchanting:book", {
|
||||||
end
|
end
|
||||||
self._player_near = player_near
|
self._player_near = player_near
|
||||||
mcl_enchanting.check_animation_schedule(self, dtime)
|
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,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -309,8 +319,8 @@ minetest.register_abm({
|
||||||
nodenames = "mcl_enchanting:table",
|
nodenames = "mcl_enchanting:table",
|
||||||
action = function(pos)
|
action = function(pos)
|
||||||
local playernames = {}
|
local playernames = {}
|
||||||
for _, obj in ipairs(minetest.get_objects_inside_radius(pos, 15)) do
|
for _,obj in pairs(minetest.get_connected_players()) do
|
||||||
if obj:is_player() then
|
if vector.distance(obj:get_pos(),pos) < 15 then
|
||||||
table.insert(playernames, obj:get_player_name())
|
table.insert(playernames, obj:get_player_name())
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue