Skip to content

Commit 189f493

Browse files
committed
feat: register default placeholders
1 parent 8428eba commit 189f493

File tree

1 file changed

+34
-1
lines changed

1 file changed

+34
-1
lines changed

endstone_papi/pypapi.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import re
2-
import typing
2+
import datetime
33

44
from typing import Callable
55
from 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

Comments
 (0)