1 320
收录服务器
1 837
注册
43 099
玩家
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 插件

PlayerNPC 是一个 Spigot 插件,提供简单的 NPC API,允许你为每个玩家创建自定义 NPC。此插件由 SergiFerry 开发。

🎮 命令与权限

  • /npclib - 用于自定义 NPCLib。
    • 权限:playernpc.command
  • /npcglobal - 用于自定义全局 NPC。
    • 权限:playernpc.command

    对持久 NPC 所做的所有更改将在服务器重启时保存。

  • /npcpersonal - 用于自定义个人 NPC。
    • 权限:playernpc.command

    这是一个实验性命令,仅用于开发者测试。服务器重启时,更改将不会被保存。

🔌 使用 PlayerNPC API 的插件

如果你希望你的插件出现在这里,请通过 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 使用

  1. 首先,将你的插件注册到 NPCLib。
    NPCLib.getInstance().registerPlugin(plugin);
  2. 生成 NPC 实例。
    
    NPC.Global npc = NPCLib.getInstance().generateGlobalNPC(plugin, id, location);
    //或者
    NPC.Personal npc = NPCLib.getInstance().generatePersonalNPC(player, plugin, id, location);
    
  3. 修改 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);
    
  4. 如果你正在使用 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();