Callbacks
Player object provided
minetest.register_on_dieplayer( )
minetest.register_on_dignode( )
minetest.register_on_player_hpchange( )
minetest.register_on_item_eat( )
minetest.register_on_joinplayer( )
minetest.register_on_newplayer( )
minetest.register_on_player_receive_fields( )
minetest.register_on_punchnode( )
minetest.register_on_respawnplayer( )
nodedef.on_place( )
nodedef.on_drop( )
nodedef.on_use( )
nodedef.on_dig( )
nodedef.on_punch( )
nodedef.on_receive_fields( )
nodedef.allow_metadata_inventory_move( )
nodedef.allow_metadata_inventory_put( )
nodedef.allow_metadata_inventory_take( )
nodedef.on_metadata_inventory_move( )
nodedef.on_metadata_inventory_put( )
nodedef.on_metadata_inventory_take( )
nodedef.after_place_node( )
nodedef.can_dig( )
nodedef.after_dig_node( )
nodedef.on_rightclick( )
Player name provided
minetest.register_on_protection_violation( )
API Functions
Player name expected
minetest.get_player_by_name( )
minetest.ban_player( )
minetest.chat_send_player( )
minetest.create_detached_inventory( )
minetest.get_player_information( )
minetest.get_player_ip( )
minetest.get_player_radius_area( )
minetest.is_protected( )
minetest.kick_player( )
minetest.player_exists( )
minetest.record_protection_violation( )
minetest.show_formspec( )
minetest.set_player_password( )
minetest.sound_play( )
Player name or object are expected
minetest.check_player_privs( )
minetest.get_player_privs( )
minetest.set_player_privs( )
minetest.add_particlespawner( )
Since player objects are only used for manipulating or examining player properties, it necessitates repeatedly converting to a player name before being able to use any of the API functions above. Wouldn't it be more consistent if the player name was passed to the callbacks instead? Or, in the very least, maybe the player object could contain a "name" field to avoid this redundancy altogether?
Right now most mods have callbacks that look somewht like this:
Code: Select all
minetest.register_on_joinplayer( function( player )
if minetest.check_player_privs( player:get_player_name( ) ) then ... end
:
minetest.chat_send_player( player:get_player_name( ) )
:
end )
If the name were a field of the object, then I think source code would be much easier to follow and maintain.
Code: Select all
minetest.register_on_joinplayer( function( player )
if minetest.check_player_privs( player.name ) then ... end
:
minetest.chat_send_player( player.name )
:
end )