cosmicpe / npcdialogue
用于制作NPC对话的PocketMine-MP库
0.1.1
2024-04-08 11:17 UTC
Requires
- php: ^8.1
- pocketmine/pocketmine-mp: ^5.0.0
- sof3/await-generator: ^3.0.0
Requires (Dev)
- phpunit/phpunit: ^9
README
NpcDialogue是一个用于创建NPC对话的PocketMine-MP库。该库旨在便携性,允许开发者在不实例化(以及处理销毁)任何实体的情况下构建对话。
该库需要事件处理,因此插件必须在启用时调用NpcDialogueManager::register()
。
+use cosmicpe\npcdialogue\NpcDialogueManager; protected function onEnable() : void{ + if(!NpcDialogueManager::isRegistered()){ + NpcDialogueManager::register($this); + } }
示例
构建一个简单的对话
该库提供了一个构建器类(NpcDialogueBuilder
),方便构建NPC对话。一旦构建完成,可以使用NPCDialogueManager::send()
将NPC对话发送给玩家。
use cosmicpe\npcdialogue\dialogue\texture\DefaultNpcDialogueTexture; use cosmicpe\npcdialogue\NpcDialogueBuilder; use cosmicpe\npcdialogue\NpcDialogueManager; use pocketmine\player\Player; $dialogue = NpcDialogueBuilder::create() ->setName("Dialogue Name") ->setText("This is an example dialogue.") ->setDefaultNpcTexture(DefaultNpcDialogueTexture::TEXTURE_NPC_10) ->addSimpleButton("Okay") ->addSimpleButton("Whatever", function(Player $player) : void{ $player->sendMessage("You clicked 'Whatever' button"); }) ->setCloseListener(function(Player $player) : void{ $player->sendMessage("You closed the dialogue"); }) ->build(); NpcDialogueManager::send($player, $dialogue);
使用已注册实体的纹理构建对话
可以将预注册实体的实体标识符提供给NpcDialogueBuilder::setEntityNpcTexture()
。
use cosmicpe\npcdialogue\NpcDialogueBuilder; use cosmicpe\npcdialogue\NpcDialogueManager; use pocketmine\network\mcpe\protocol\types\entity\EntityIds; NpcDialogueManager::send($player, NpcDialogueBuilder::create() ->setName("Honey Bee") ->setText(file_get_contents("bee_movie_script.txt")) ->setEntityNpcTexture(EntityIds::BEE) ->build());
使用玩家的皮肤作为纹理构建对话
可以将玩家皮肤(Skin
对象)提供给NpcDialogueBuilder::setSkinNpcTexture()
。
use cosmicpe\npcdialogue\NpcDialogueBuilder; use cosmicpe\npcdialogue\NpcDialogueManager; NpcDialogueManager::send($player, NpcDialogueBuilder::create() ->setName("This is YOU!") ->setText("You have the power within you to overcome any obstacle that comes your way. You are resilient, capable, and determined to achieve greatness. Embrace the challenges, believe in yourself, and remember that every step you take brings you closer to your dreams. Keep pushing forward with unwavering determination, for the world awaits the extraordinary impact you're destined to make.") ->setSkinNpcTexture($player->getSkin()) ->build());
您可以设置玩家皮肤的'肖像偏移'以调整纹理的缩放。
use cosmicpe\npcdialogue\NpcDialogueBuilder; use cosmicpe\npcdialogue\NpcDialogueManager; $parent = NpcDialogueTextureOffset::defaultPlayerPortrait(); $portrait_offset = new NpcDialogueTextureOffset(2.0, 2.0, 2.0, $parent->translate_x, $parent->translate_y, $parent->translate_z); NpcDialogueManager::send($player, NpcDialogueBuilder::create() ->setName("This is YOU!") ->setText("You have the power within you to overcome any obstacle that comes your way. You are resilient, capable, and determined to achieve greatness. Embrace the challenges, believe in yourself, and remember that every step you take brings you closer to your dreams. Keep pushing forward with unwavering determination, for the world awaits the extraordinary impact you're destined to make.") ->setSkinNpcTexture($player->getSkin(), null, $portrait_offset) ->build());