sof3 / 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:20:33 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 v2是一个使用virion 3.1的病毒库。virion 3.1使用composer安装库
- 通过在您的composer.json中添加sof3/infoapi来包含InfoAPI
{ "require": { "sof3/infoapi": "^2" } }
您可以将此文件放在您的plugin.yml旁边。建议安装composer,但不是必需的。
-
使用pharynx通过InfoAPI病毒库构建您的插件。您可以使用pharynx提供的自定义start.cmd/start.sh在服务器上测试它。
-
使用pharynx GitHub操作与Poggit集成。请记住忽略您的vendor目录,以便您不会将其推送到GitHub。
用户指南:编写模板
InfoAPI用变量替换{}
内的表达式。例如,如果聊天插件提供了两个变量
sender
:发送聊天的玩家(SOFe)message
:聊天消息,如果插件为模板提供了sender
和message
("Hello world"),则以下内容将变成类似<SOFe> Hello world
的内容
<{sender}> {message}
颜色代码是默认变量。您可以用以下方式代替写§1 §b等
{aqua}<{sender}> {white}{message}
您可以为变量获取更详细的信息。例如,要获取玩家player
的坐标
{player} is at ({player x}, {player y}, {player z}).
直接写入{
会导致错误,如果没有匹配的}
。如果您想写一个不是表达式部分的{
/}
,请写两次
hello {{world}}.
这将变成
hello {world}.