Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Спрятать игрока

Метод с эффектом зелья никак не подходит, ибо амуниция на игроке и что у него в руке все видят. Подожду ещё идей и попробую вариант от @maniak89
 
Метод с эффектом зелья никак не подходит, ибо амуниция на игроке и что у него в руке все видят. Подожду ещё идей и попробую вариант от @maniak89
При взаимодействии с Entity клиент отсылает 0x09 - использование существа, там информация о правом/левом клике. Далее идут разнообразные проверки на сервере, не суть. Суть в том, что EntityDamageByEntityEvent или PlayerInreractEntityEvent не вызовется, вызовется лишь PlayerInteractEvent. Попробуйте, там есть метод getBlock(), возьмите координаты блока, переберите всех игроков, их координаты сравните, привести их оба к int. Но даже если и получится сия операция, то бой будет не очень точным.
 
При взаимодействии с Entity клиент отсылает 0x09 - использование существа, там информация о правом/левом клике. Далее идут разнообразные проверки на сервере, не суть. Суть в том, что EntityDamageByEntityEvent или PlayerInreractEntityEvent не вызовется, вызовется лишь PlayerInteractEvent. Попробуйте, там есть метод getBlock(), возьмите координаты блока, переберите всех игроков, их координаты сравните, привести их оба к int. Но даже если и получится сия операция, то бой будет не очень точным.
буду пробовать
 
Решил попробовать LEFT_CLICK_AIR, но он почему то не работает, хотя LEFT_CLICK_BLOCK вполне работает

Java:
    public void onPlayerInteract(PlayerInteractEvent event)
    {
        Action act;
        Player player = event.getPlayer();
        act = event.getAction();
 
        if(act == Action.LEFT_CLICK_AIR)
        {
            player.sendMessage("12345");
        }
 
Решил попробовать LEFT_CLICK_AIR, но он почему то не работает, хотя LEFT_CLICK_BLOCK вполне работает

Java:
    public void onPlayerInteract(PlayerInteractEvent event)
    {
        Action act;
        Player player = event.getPlayer();
        act = event.getAction();
 
        if(act == Action.LEFT_CLICK_AIR)
        {
            player.sendMessage("12345");
        }
Скобочка public void onPlayerInteract(PlayerInteractEvent event) не закрыта (вот такая: } )
 
Скобочка public void onPlayerInteract(PlayerInteractEvent event) не закрыта (вот такая: } )
не придирайся к скобкам, я его наспех вытащил и сюда вставил. сам факт в том, что LEFT_CLICK_AIR не работает, а LEFT_CLICK_BLOCK работает
 
LEFT_CLICK_BLOCK отрабатывает ли когда я смотрю в небо допустим?(щас не могу проверить)
 
Попробуйте отослать клиенту левый пакет, в котором некий игрок или моб имеет эффект невидимости. Будут ли тогда отображаться пузырьки?
Возможно, пакет придется отправить далеко не один раз.

UPD: пакет http://mc.kev009.com/Protocol#Entity_Effect_.280x29.29
 
LEFT_CLICK_BLOCK отрабатывает ли когда я смотрю в небо допустим?(щас не могу проверить)
Сегодня, по неясной причине удар по воздуху стал работать:confused:
Попробуйте отослать клиенту левый пакет, в котором некий игрок или моб имеет эффект невидимости. Будут ли тогда отображаться пузырьки?
Возможно, пакет придется отправить далеко не один раз.

UPD: пакет http://mc.kev009.com/Protocol#Entity_Effect_.280x29.29
а не подскажешь как их отправлять?
 
а не подскажешь как их отправлять?
Packet packet = new Packet41EntityEffect(ищите параметры конструктора);
// или придется пакет редактировать вручную, если нельзя это сделать конструктором
((CraftPlayer)player).getHandler().netServerHandler.sendPacket( packet );

UPD: в параметрах конструктора указываем id игрока и PotionEffect.
 

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

Назад
Верх