sofe / infoapi
Requires
- php: ^8.1
- pocketmine/pocketmine-mp: ^5.0.0
- sof3/await-generator: ^3.6.1
- sof3/pmevent: ^0.0.2
- sof3/zleep: ^0.1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.20
- phpstan/extension-installer: ^1.1.0
- phpstan/phpstan: ^1.10.0
- phpstan/phpstan-phpunit: ^1.0.0
- phpunit/phpunit: ^9.5.0
- sof3/pharynx: ^0.3.4
This package is auto-updated.
Last update: 2024-08-30 01:23:35 UTC
README
为 PocketMine 插件提供可扩展的模板。
简而言之,InfoAPI 提供了一个简单的 API 来在插件之间注册占位符。但它的功能远不止于此
- 面向对象的占位符表达式
- 当变量更改时,持续更新模板
- 参数化信息 - 对信息表达式进行数学运算
开发者指南:模板化
如果您允许用户在配置中自定义消息,您可以考虑使用 InfoAPI 来格式化消息。
将配置消息传递给 InfoAPI
use SOFe\InfoAPI; // $this is the plugin main $player->sendMessage(InfoAPI::render($this, $this->getConfig()->get("format"), [ "arg" => $arg, ], $player));
- "message" 是消息模板的配置键
- args 数组是模板的基本变量。变量的类型必须是默认类型之一或通过
InfoAPI::addKind
由另一个插件提供的。 $player
是可选的。它告诉 InfoAPI 如何更好地本地化消息,例如通过为玩家的语言进行格式化。
高级:持续模板化
您可以使用 renderContinuous
API 创建模板并监视更改
use SOFe\AwaitGenerator\Await; use SOFe\InfoAPI; Await::f2c(function() use($player) { $traverser = InfoAPI::renderContinuous($this, $this->getConfig()->get("format"), [ "arg" => $arg, ], $player); while(yield from $traverser->next($message)) { $player->sendPopup($message); } });
开发者指南:注册映射
映射将一个信息转换为另一个信息,例如 money
将玩家转换为 {player money}
中的金额。您可以注册自己的映射,以便您的插件以及其他使用 InfoAPI 的插件可以使用模板中的此信息。
例如,为了提供在线玩家的金额
InfoAPI::addMapping( $this, "myplugin.money", fn(Player $player) : ?int => $this->getMoney($player), );
源和返回类型必须是默认类型或 InfoAPI::addKind
类型。
高级:注册持续映射
您还可以提供 watchChanges
闭包,它返回一个 遍历器,当检测到更改时产生值。 pmevent 库可以帮助从事件构建遍历器
InfoAPI::addMapping( $this, "myplugin.money", fn(Player $player) : ?int => $this->getMoney($player), watchChanges: fn(Player $player) => Events::watch( $this, MoneyChangeEvent::class, $player->getName(), fn(MoneyChangeEvent $event) => $event->getPlayer()->getName(), )->asGenerator(), );
开发者指南:安装 InfoAPI
如果您不是在开发插件,您 不需要 自己安装 InfoAPI。插件应在其 phar 发布中包含 InfoAPI。
InfoAPI v2 是一个使用 virion 3.1 的病毒库。virion 3.1 使用 composer 安装库
- 通过在您的 composer.json 中添加 sof3/infoapi 来包含 InfoAPI
{ "require": { "sof3/infoapi": "^2" } }
您可以将此文件放在您的 plugin.yml 旁边。建议安装 composer,但不是必需的。
-
使用 pharynx 使用 InfoAPI 病毒库构建您的插件。您可以在 pharynx 提供的 custom start.cmd/start.sh 服务器上测试它。
-
使用 pharynx GitHub 动作 与 Poggit 集成。请记住,忽略您的 vendor 目录,以便不要将其推送到 GitHub。
用户指南:编写模板
InfoAPI 用变量替换 {}
内的表达式。例如,如果聊天插件提供了两个变量
sender
: 发送聊天的玩家(SOFe)message
: 聊天消息。如果插件为模板提供了sender
和message
("Hello world"),以下内容将变成类似<SOFe> Hello world
的样子
<{sender}> {message}
颜色代码是默认变量。您可以用 &1 &b
等代替写 §1 §b 等
{aqua}<{sender}> {white}{message}
您可以为变量获取更多详细信息。例如,要获取玩家的坐标 player
{player} is at ({player x}, {player y}, {player z}).
直接编写 {
将会导致错误,如果没有匹配的 }
。如果您想编写一个不作为表达式一部分的 {
/}
,请重复编写两次
hello {{world}}.
这将变为
hello {world}.