Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем iD3LSY, 20 апр 2017.

Статус темы:
Закрыта.
  1. Автор темы
    iD3LSY

    iD3LSY Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    opy
    Драсте, форумчане :)

    Около ~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.
     
  2. Хостинг MineCraft
    <
  3. xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    детект кликов:
    ProtocolLibrary.getProtocolManager().addPacketListener
     
  4. DonDays

    DonDays Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Свой PlayerInteractManager.
     
  5. Автор темы
    iD3LSY

    iD3LSY Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    opy
    Так, окей, сразу не увидел. Сейчас загуглил - нашёл темку.

    Сейчас думаю проверю, но вроде ведь нету проверки на самого NPC. Возможно ли узнать, какой он например из 100? Т.е. если их будет 100, то все они будут реагировать на клик одинаково.[DOUBLEPOST=1492714922,1492714877][/DOUBLEPOST]
    Свой, если мне нужно будет узнать, какого именно NPC нажал? Или как я уже выше спросил, можно как то их распознавать?
     
  6. Dan_Ender

    Dan_Ender Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Dan_Ender
    PlayerInteractEntityEvent e

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

    Писал с планша, могут быть ошибки.[DOUBLEPOST=1492726431,1492726382][/DOUBLEPOST]Можно и через id
     
  7. DonDays

    DonDays Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Куда на лечение?
    Создаешь класс, который наследует PlayerInteractManager и оверрайдешь методы
     
  8. xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    проще будет протокол либом, если на несколько версий делать
     
  9. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    PlayerInteractEntityEvent or EntityDamageByEntityEvent.
     
Статус темы:
Закрыта.

Поделиться этой страницей