Player NPC API
作者:SergiFerry
发布时间:2021年6月25日
原生版本:未知
测试支持:1.17,1.18,1.19,1.20
播放器NPC Lib通过1.17、1.18、1.19和1.20的Packet API
点此下载插件详细介绍
✨ PlayerNPC 插件
PlayerNPC 是一个 Spigot 插件,提供简单的 NPC API,允许你为每个玩家创建自定义 NPC。此插件由 SergiFerry 开发。
🎮 命令与权限
/npclib- 用于自定义 NPCLib。- 权限:
playernpc.command
- 权限:
/npcglobal- 用于自定义全局 NPC。- 权限:
playernpc.command
对持久 NPC 所做的所有更改将在服务器重启时保存。
- 权限:
/npcpersonal- 用于自定义个人 NPC。- 权限:
playernpc.command
这是一个实验性命令,仅用于开发者测试。服务器重启时,更改将不会被保存。
- 权限:
🔌 使用 PlayerNPC API 的插件
- Corpses - SergiFerry 开发
- RandomTeleport - SergiFerry 开发
- Graves - Ranull 开发
如果你希望你的插件出现在这里,请通过 Twitter @SergiFerry 联系我。
📚 JavaDocs
所有 JavaDocs 均可在以下网址获得:https://sergiferry.github.io/PlayerNPC/
📦 安装
将 PlayerNPC.jar 放入服务器的 /plugins 文件夹中,并将该 jar 添加到你的 Java 项目的库中。
Maven:
<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>
🛠️ API 使用
- 首先,将你的插件注册到 NPCLib。
NPCLib.getInstance().registerPlugin(plugin); - 生成 NPC 实例。
NPC.Global npc = NPCLib.getInstance().generateGlobalNPC(plugin, id, location); //或者 NPC.Personal npc = NPCLib.getInstance().generatePersonalNPC(player, plugin, id, location); - 修改 NPC 属性。
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); - 如果你正在使用 Personal NPCs,则需要创建并向玩家显示它。
npc.create(); npc.show();
👂 监听 NPC 交互事件
你可以监听玩家与 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。
npc.hide();
npc.destroy();
🎭 更改 NPC 皮肤
即使 NPC 已经创建并显示,你也可以更改 NPC 皮肤。
npc.setSkin(NPC.Skin);
npc.forceUpdate();
👀 更改 NPC 视线方向
npc.lookAt(location);
npc.update();
📍 传送 NPC
npc.teleport(location);
💬 更改 NPC 上方的文本
npc.setText(String...);
npc.setLineOpacity(Integer, NPC.Hologram.Opacity);
npc.updateText(); //如果文本具有相同数量的行
npc.forceUpdateText(); //如果文本具有不同数量的行
npc.setHideText(boolean); //你也可以隐藏文本,然后在以后显示它
请记住,在 NPC 实例中所做的一些更改在更新 NPC 之前不会对玩家客户端产生影响。
npc.update();
npc.forceUpdate();