PlayerNPC 是一款适用于 Spigot 服务器的简易 NPC API,它允许你为每位玩家创建专属的 NPC。该插件由 SergiFerry 开发。
/npclib - 用于自定义 NPCLib。/npcglobal - 用于自定义全局 NPC。/npcpersonal - 用于自定义个人 NPC(此为实验性命令,仅供开发者测试,重启服务器后更改不会保存)。所有命令的使用权限均为:playernpc.command。对持久化 NPC 所做的更改将在服务器重启后保留。
如果你的插件也使用了 PlayerNPC API,可以通过 Twitter @SergiFerry 联系作者以展示在此处。
完整的 JavaDocs 可在以下地址查看:https://sergiferry.github.io/PlayerNPC/
PlayerNPC.jar 放入服务器的 /plugins 文件夹。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>首先,注册你的插件到 NPCLib:
NPCLib.getInstance().registerPlugin(plugin);第一步:生成 NPC 实例
// 生成全局 NPC
NPC.Global npc = NPCLib.getInstance().generateGlobalNPC(plugin, id, location);
// 或生成个人 NPC
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);第三步:对于个人 NPC,需要创建并显示给玩家
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 注视方向:
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.update();
npc.forceUpdate();友情链接: 网易我的世界 | 泰拉瑞亚 | ocent云计算 | 米饭Minecraft插件文档 | 友链合作
历史访问人次:3,028,325 | 今日访问人次:12,453 | 昨日访问人次:11,147
独立 IP:4,880 | 最近24小时有3,877人访问本站
Copyright © 2019-2026 我的世界服务器列表站. All rights reserved.
❤ Powered by GermMC 京ICP备17023959号-6