Player NPC API | |
---|---|
![]() |
播放器NPC Lib通过1.17、1.18、1.19和1.20的Packet API |
作 者 | SergiFerry |
发布时间 | 2021年6月25日 |
支持核心 | Spigot | 原生版本 |
支持版本 | 1.17,1.18,1.19,1.20 |
插件详细介绍
PlayerNPC 是一个 Spigot 插件,提供简单的 NPC API,允许你为每个玩家创建自定义 NPC。此插件由 SergiFerry 开发。
/npclib
- 用于自定义 NPCLib。
playernpc.command
/npcglobal
- 用于自定义全局 NPC。
playernpc.command
对持久 NPC 所做的所有更改将在服务器重启时保存。
/npcpersonal
- 用于自定义个人 NPC。
playernpc.command
这是一个实验性命令,仅用于开发者测试。服务器重启时,更改将不会被保存。
如果你希望你的插件出现在这里,请通过 Twitter @SergiFerry 联系我。
所有 JavaDocs 均可在以下网址获得:https://sergiferry.github.io/PlayerNPC/
将 PlayerNPC.jar
放入服务器的 /plugins
文件夹中,并将该 jar 添加到你的 Java 项目的库中。
<repository>
<id>ranull-repo-external</id>
<url>https://repo.ranull.com/maven/external/</url>
</repository>
<dependency>
<groupId>dev.sergiferry</groupId>
<artifactId>playernpc</artifactId>
<version>2023.4</version>
<scope>provided</scope>
</dependency>
NPCLib.getInstance().registerPlugin(plugin);
NPC.Global npc = NPCLib.getInstance().generateGlobalNPC(plugin, id, location);
//或者
NPC.Personal npc = NPCLib.getInstance().generatePersonalNPC(player, plugin, id, location);
npc.setSkin(texture, signature); //使用 https://mineskin.org/
npc.setItem(NPC.Slot, ItemStack);
npc.setText(String...);
npc.setGlowing(boolean, ChatColor);
npc.setCollidable(boolean);
npc.setGazeTrackingType(NPC.GazeTrackingType);
npc.setCustomTabListName(String, boolean);
npc.setHideDistance(double);
npc.setShowOnTabList(boolean);
npc.setInteractCooldown(long);
npc.setLineSpacing(double);
npc.setTextOpacity(NPC.Hologram.Opacity);
npc.setTextAlignment(Vector);
npc.setPose(NPC.Pose);
npc.addCustomClickAction(NPC.Interact.ClickType, CustomAction);
npc.create();
npc.show();
你可以监听玩家与 NPC 的交互,但最好使用 ClickActions。
@EventHandler
public void onNPCInteract(NPC.Events.Interact event){
Player player = event.getPlayer();
NPC npc = event.getNPC();
NPC.Interact.ClickType clickType = event.getClickType();
}
你可以临时隐藏或永久销毁 NPC。
npc.hide();
npc.destroy();
即使 NPC 已经创建并显示,你也可以更改 NPC 皮肤。
npc.setSkin(NPC.Skin);
npc.forceUpdate();
npc.lookAt(location);
npc.update();
npc.teleport(location);
npc.setText(String...);
npc.setLineOpacity(Integer, NPC.Hologram.Opacity);
npc.updateText(); //如果文本具有相同数量的行
npc.forceUpdateText(); //如果文本具有不同数量的行
npc.setHideText(boolean); //你也可以隐藏文本,然后在以后显示它
请记住,在 NPC 实例中所做的一些更改在更新 NPC 之前不会对玩家客户端产生影响。
npc.update();
npc.forceUpdate();