2022-09-20 00:18:49 +02:00
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 )
2022-09-20 03:17:11 +02:00
if not entity.get_luaentity then return end -- Ensure the entity is still valid
2022-09-20 00:18:49 +02:00
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
2022-09-20 03:17:11 +02:00
local texture_name = " worldeditadditions_bg.png "
if display_number < 100 then
local number_right = display_number % 10
local number_left = ( display_number - number_right ) / 10
texture_name = texture_name .. " ^worldeditadditions_l " .. number_left .. " .png "
texture_name = texture_name .. " ^worldeditadditions_r " .. number_right .. " .png "
print ( " DEBUG:set_number number_left " , number_left , " number_right " , number_right )
end
texture_name = " ( " .. texture_name .. " )^[opacity:220 "
print ( " DEBUG:set_number texture_name " , texture_name )
entity : set_properties ( {
textures = {
texture_name , texture_name , texture_name ,
texture_name , texture_name , texture_name ,
}
} )
2022-09-20 00:18:49 +02:00
end
anchor = EventEmitter.new ( {
create = create ,
delete = delete ,
set_number = set_number
} )
return anchor