11import re
2- import typing
2+ import datetime
33
44from typing import Callable
55from endstone .plugin import Plugin
@@ -14,6 +14,7 @@ def __init__(self, plugin: Plugin):
1414 self ._plugin = plugin
1515 self ._registry = {}
1616 self ._placeholder_pattern = re .compile (r"[{]([^{}]+)[}]" )
17+ self ._register_default_placeholders ()
1718
1819 def set_placeholder (self , player : Player | None , text : str ) -> str :
1920 return apply (player , text , self ._registry .get )
@@ -40,3 +41,35 @@ def register_placeholder(self, plugin: Plugin, identifier: str,
4041
4142 self ._registry [identifier ] = processor
4243 return True
44+
45+ def _register_default_placeholders (self ):
46+ self .register_placeholder (self ._plugin , "x" , lambda player , params : str (int (player .location .x )))
47+ self .register_placeholder (self ._plugin , "y" , lambda player , params : str (int (player .location .y )))
48+ self .register_placeholder (self ._plugin , "z" , lambda player , params : str (int (player .location .z )))
49+ self .register_placeholder (self ._plugin , "player_name" , lambda player , params : player .name )
50+ self .register_placeholder (self ._plugin , "dimension" , lambda player , params : player .location .dimension .type .name .lower ())
51+ self .register_placeholder (self ._plugin , "dimension_id" , lambda player , params : player .location .dimension .type .value )
52+ self .register_placeholder (self ._plugin , "ping" , lambda player , params : player .ping )
53+ self .register_placeholder (self ._plugin , "mc_version" , lambda player , params : self ._plugin .server .minecraft_version )
54+ self .register_placeholder (self ._plugin , "online" , lambda player , params : str (len (self ._plugin .server .online_players )))
55+ self .register_placeholder (self ._plugin , "max_online" , lambda player , params : str (self ._plugin .server .max_players ))
56+ self .register_placeholder (self ._plugin , "date" , lambda player , params : datetime .datetime .today ().strftime ("%x" ))
57+ self .register_placeholder (self ._plugin , "time" , lambda player , params : datetime .datetime .today ().strftime ("%X" ))
58+ self .register_placeholder (self ._plugin , "datetime" , lambda player , params : datetime .datetime .today ().strftime ("%c" ))
59+ self .register_placeholder (self ._plugin , "year" , lambda player , params : datetime .datetime .today ().strftime ("%Y" ))
60+ self .register_placeholder (self ._plugin , "month" , lambda player , params : datetime .datetime .today ().strftime ("%m" ))
61+ self .register_placeholder (self ._plugin , "day" , lambda player , params : datetime .datetime .today ().strftime ("%d" ))
62+ self .register_placeholder (self ._plugin , "hour" , lambda player , params : datetime .datetime .today ().strftime ("%H" ))
63+ self .register_placeholder (self ._plugin , "minute" , lambda player , params : datetime .datetime .today ().strftime ("%M" ))
64+ self .register_placeholder (self ._plugin , "second" , lambda player , params : datetime .datetime .today ().strftime ("%S" ))
65+ self .register_placeholder (self ._plugin , "address" , lambda player , params : player .address )
66+ self .register_placeholder (self ._plugin , "runtime_id" , lambda player , params : player .runtime_id )
67+ self .register_placeholder (self ._plugin , "exp_level" , lambda player , params : player .exp_level )
68+ self .register_placeholder (self ._plugin , "total_exp" , lambda player , params : player .total_exp )
69+ self .register_placeholder (self ._plugin , "exp_progress" , lambda player , params : player .exp_progress )
70+ self .register_placeholder (self ._plugin , "game_mode" , lambda player , params : player .game_mode .name .lower ())
71+ self .register_placeholder (self ._plugin , "xuid" , lambda player , params : player .xuid )
72+ self .register_placeholder (self ._plugin , "uuid" , lambda player , params : player .unique_id )
73+ self .register_placeholder (self ._plugin , "device_os" , lambda player , params : player .device_os )
74+ self .register_placeholder (self ._plugin , "locale" , lambda player , params : player .locale )
75+
0 commit comments