Minetest-WorldEditAdditions/worldeditadditions_core/core/entities/pos_marker.lua

81 lines
2.1 KiB
Lua

local wea_c = worldeditadditions_core
local EventEmitter = worldeditadditions_core.EventEmitter
local anchor
local WEAPositionMarker = {
initial_properties = {
visual = "cube",
visual_size = { x = 1.15, y = 1.1 },
collisionbox = { -0.55, -0.55, -0.55, 0.55, 0.55, 0.55 },
physical = false,
collide_with_objects = false,
static_save = false,
textures = {
"worldeditadditions_bg.png",
"worldeditadditions_bg.png",
"worldeditadditions_bg.png",
"worldeditadditions_bg.png",
"worldeditadditions_bg.png",
"worldeditadditions_bg.png",
}
},
on_activate = function(self, staticdata)
-- noop
end,
on_punch = function(self, _)
anchor.delete(self)
end,
on_blast = function(self, damage)
return false, false, {} -- Do not damage or knockback the player
end
}
minetest.register_entity(":worldeditadditions:position", WEAPositionMarker)
local function create(player_name, pos, display_number)
local entity = minetest.add_entity(pos, "worldeditadditions:position")
entity:get_luaentity().player_name = player_name
entity:get_luaentity().display_number = display_number
anchor.set_number(entity, display_number)
anchor:emit("create", {
player_name = player_name,
pos = pos,
display_number = display_number,
})
return entity
end
local function delete(entity)
local player_name = entity:get_luaentity().player_name
local display_number = entity:get_luaentity().display_number
entity:remove()
anchor:emit("delete", {
player_name = player_name,
display_number = display_number
})
end
local function set_number(entity, display_number)
if type(display_number) ~= "number" then return false, "Error: The 'display_number' property must be of type number, but received value of unexpected type '"..type(display_number).."'." end
-- marker:set_properties({ }) is our friend
print("DEBUG:pos_marker_set_number display_number", display_number)
print("DEBUG:pos_marker_set_number TODO_IMPLEMENT THIS. entity", wea_c.inspect(entity))
end
anchor = EventEmitter.new({
create = create,
delete = delete,
set_number = set_number
})
return anchor