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

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

Discussion in 'Разработка плагинов для новичков' started by iD3LSY, Apr 20, 2017.

Thread Status:
Not open for further replies.
  1. Автор темы
    iD3LSY

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

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

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

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

    Code:
    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 Активный участник Пользователь

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

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

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

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

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

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

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

    Trophy Points:
    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 Активный участник Пользователь

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

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

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

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

    Trophy Points:
    173
    Skype:
    alexandr0116
    PlayerInteractEntityEvent or EntityDamageByEntityEvent.
     
Thread Status:
Not open for further replies.

Share This Page