Question How to spawn NPCs?

  • After careful consideration and due to limited usage, we’ve made the decision to discontinue the PaperMC forums. Moving forward, we recommend using Hangar for plugin uploads, and for all other community discussions and support, please join us on Discord.

lollolcheese123

New member
May 27, 2023
12
0
1
How do I spawn a fake player (aka NPC) like the ones you have in Hypixel?
I am fine with using NMS, CraftBukkit and ProtocolLib.

I've tried a buncha stuff already, but nothing seems to work.
I'd also like to be able to set a custom skin, not just a skin a player is using.
 

lollolcheese123

New member
May 27, 2023
12
0
1
Yeah, I know the trick. Here's the code:
Java:
package lollolcheese123.cybrspace.cmds.adminCmds;

import de.oliver.fancynpcs.api.FancyNpcsPlugin;
import de.oliver.fancynpcs.api.Npc;
import de.oliver.fancynpcs.api.NpcData;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;

import java.util.Collections;
import java.util.List;
import java.util.UUID;

public class test implements CommandExecutor, TabCompleter {
    @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage("Only players can run this command!");
            return true;
        }

if (args.length != 1) {
sender.sendMessage("Too short/long!");
            return true;
        }

NpcData npcData = new NpcData("Portal Master", UUID.randomUUID(), ((Player) sender).getLocation());
        Npc newNpc = FancyNpcsPlugin.getNpcAdapter().apply(npcData);
        newNpc.create();
        FancyNpcsPlugin.get().getNpcManager().registerNpc(newNpc);
        newNpc.spawnForAll();

        return true;
    }
    @Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
return Collections.emptyList();
    }
}

I've also tried it somewhere else (same issue):
Java:
package lollolcheese123.cybrspace.npc;

import de.oliver.fancynpcs.api.FancyNpcsPlugin;
import de.oliver.fancynpcs.api.Npc;
import de.oliver.fancynpcs.api.NpcData;
import de.oliver.fancynpcs.api.NpcManager;
import org.bukkit.Location;
import org.bukkit.entity.Player;

import java.util.UUID;

public class npcHandler {
NpcManager manager = FancyNpcsPlugin.get().getNpcManager();
    public void init() {
    }
public void createPortalMaster(Location location) {
NpcData npcData = new NpcData("Portal Master", UUID.randomUUID(), location);
        Npc newNpc = FancyNpcsPlugin.getNpcAdapter().apply(npcData);
        newNpc.create();
        FancyNpcsPlugin.get().getNpcManager().registerNpc(newNpc);
        newNpc.spawnForAll();
    }
}