Помогите Призыв, детект кликов по NPC

  • Автор темы Автор темы iD3LSY
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

iD3LSY

Активный участник
Пользователь
Баллы
76
Драсте, форумчане :)

Около ~3 месяцов назад пытался заспавнить NPC, а позже уже детектить по нему клики. Призвать - призвал, а вот как детектить - вообще хз.

Идеи на счет "загугли" не катят. Уже тогда все перерыл. (на тот момент, скорее всего как и сейчас ничего не понял там)

Код:
private EntityPlayer npc;

public void onEnable() {
    Bukkit.getServer().getPluginManager().registerEvents(this, this);

    MinecraftServer nmsServer = ((CraftServer) Bukkit.getServer()).getServer();
    WorldServer nmsWorld = ((CraftWorld) Bukkit.getWorlds().get(0)).getHandle();
    npc = new EntityPlayer(nmsServer, nmsWorld, new GameProfile(UUID.fromString("c793afb5-c4b7-4fdb-a100-b761315913c4"), "PogoStick29"), new PlayerInteractManager(nmsWorld));
}

@EventHandler
public void onPlayerJoin(PlayerJoinEvent e) {
    npc.setLocation(e.getPlayer().getLocation().getX(), e.getPlayer().getLocation().getY(), e.getPlayer().getLocation().getZ(), 0, 0);
    PlayerConnection connection = ((CraftPlayer) e.getPlayer()).getHandle().playerConnection;
    connection.sendPacket(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, npc));
    connection.sendPacket(new PacketPlayOutNamedEntitySpawn(npc));
}

Весь код взят с ролика PogoStick29Dev.
 
детект кликов:
ProtocolLibrary.getProtocolManager().addPacketListener
 
Свой PlayerInteractManager.
 
детект кликов:
ProtocolLibrary.getProtocolManager().addPacketListener
Так, окей, сразу не увидел. Сейчас загуглил - нашёл темку.

Сейчас думаю проверю, но вроде ведь нету проверки на самого NPC. Возможно ли узнать, какой он например из 100? Т.е. если их будет 100, то все они будут реагировать на клик одинаково.
Свой PlayerInteractManager.
Свой, если мне нужно будет узнать, какого именно NPC нажал? Или как я уже выше спросил, можно как то их распознавать?
 
PlayerInteractEntityEvent e

Entity ent = e.getEntity();
If (ent.getType()==EntityType.Player) {
If (ent.getCustomName().equalsIgnoreCase("name")) {
SomeAction
}
}

Писал с планша, могут быть ошибки.
Можно и через id
 
PlayerInteractEntityEvent e

Entity ent = e.getEntity();
If (ent.getType()==EntityType.Player) {
If (ent.getCustomName().equalsIgnoreCase("name")) {
SomeAction
}
}
Куда на лечение?
вой, если мне нужно будет узнать, какого именно NPC нажал? Или как я уже выше спросил, можно как то их распознавать?
Создаешь класс, который наследует PlayerInteractManager и оверрайдешь методы
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх