How to send packet to spwaned npc

Discussion in 'Plugin Development' started by HeroBear, Dec 23, 2019.

Thread Status:
Not open for further replies.
  1. Hi. I have this npcs TEST plugin and i can spwan the npc but after that i cant do anything with the npc.
    So i have some questions:
    • how to send packet
    • how to send move packet
    • jump p.
    • all thing in the //
    • etc.
    (that //special can be anything that just for some animation or some usefull thing)

    Code:
    package idk.plugin.npcs;
    
    
    import java.util.UUID;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Material;
    import org.bukkit.craftbukkit.v1_14_R1.CraftServer;
    import org.bukkit.craftbukkit.v1_14_R1.CraftWorld;
    import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import com.mojang.authlib.GameProfile;
    
    import net.minecraft.server.v1_14_R1.EntityPlayer;
    import net.minecraft.server.v1_14_R1.MinecraftServer;
    import net.minecraft.server.v1_14_R1.PacketPlayOutNamedEntitySpawn;
    import net.minecraft.server.v1_14_R1.PacketPlayOutPlayerInfo;
    import net.minecraft.server.v1_14_R1.PacketPlayOutPlayerInfo.EnumPlayerInfoAction;
    import net.minecraft.server.v1_14_R1.PlayerConnection;
    import net.minecraft.server.v1_14_R1.PlayerInteractManager;
    import net.minecraft.server.v1_14_R1.WorldServer;
    
    public class Main extends JavaPlugin implements Listener
    {
        public void onEnable()
        {
            getServer().getPluginManager().registerEvents(this, (Plugin)this);
        }
    
        public void onDisable()
        {
        }
    
        @EventHandler
        public void onInventoryClick(InventoryClickEvent e)
        {
            Player p = (Player) e.getWhoClicked();
            ItemStack item = e.getCurrentItem();
         
            MinecraftServer server = ((CraftServer)Bukkit.getServer()).getServer();
            WorldServer world = ((CraftWorld)Bukkit.getServer().getWorlds().get(0)).getHandle();
            EntityPlayer bot = new EntityPlayer(server, world, new GameProfile(UUID.fromString(TheUUID), "Worker"), new PlayerInteractManager(world));
         
            PlayerConnection connection = ((CraftPlayer) p).getHandle().playerConnection;
         
            if (item.getType().equals(Material.OAK_PLANKS))
            {
                e.setCancelled(true);
                //bot spawn
             
                bot.setLocation(p.getLocation().getX(), p.getLocation().getY(), p.getLocation().getZ(), 0f, 0f);
    
                PacketPlayOutPlayerInfo playerInfoPacket = new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, bot);
                PacketPlayOutNamedEntitySpawn namedEntityPacket = new PacketPlayOutNamedEntitySpawn(bot);
             
                connection.sendPacket(playerInfoPacket);
                connection.sendPacket(namedEntityPacket);
            }
         
            if (item.getType().equals(Material.OBSIDIAN))
            {
                e.setCancelled(true);
                //bot remove
            }
         
            if (item.getType().equals(Material.SPECTRAL_ARROW))
            {
                e.setCancelled(true);
                //special
            }
         
            if (item.getType().equals(Material.ARROW))
            {
                e.setCancelled(true);
                //jump
            }
         
            if (item.getType().equals(Material.STONE_SWORD))
            {
                e.setCancelled(true);
                //go left
            }
         
            if (item.getType().equals(Material.IRON_SWORD))
            {
                e.setCancelled(true);
                //go right
            }
         
        }
    
    }
    
     
    Last edited: Dec 24, 2019
Thread Status:
Not open for further replies.

Share This Page