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

Помогите Как сделать бессмертие при приземлении?

Discussion in 'Помощь' started by BungeeHelp, Oct 10, 2021.

  1. Автор темы
    BungeeHelp

    BungeeHelp Участник

    Trophy Points:
    33
    Добрый вечер, дорой просматриватель темы , у меня такая проблема, которая описана в теме.
    Так вот , как это можно реализовать?
    Ссылка на код --> https://hastebin.com/aqapafurob
    Вот сам момент подбрасывания игрока (вложение)
     
  2. Хостинг MineCraft
    <
  3. MySoulIsCry

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

    Trophy Points:
    68
    Создаешь лист в котором храниш игроков которые не должны получить урон, далее отлавливаешь получение урона и если это урон от падения то отменяеш ивент и убираеш игрока из листа.
     
    BungeeHelp likes this.
  4. Автор темы
    BungeeHelp

    BungeeHelp Участник

    Trophy Points:
    33
    Добрый день, извиняюсь что немножко поздновато. Но один лишь вопрос, как собственно это сделать? Можете предоставить это в виде кода или объяснить получше. Заранее спасибо
     
  5. MySoulIsCry

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

    Trophy Points:
    68
    PHP:
    public class MyClass implements Listener{
     
        private List<
    PlayertpList = new ArrayList<Player>();
     
        @
    EventHandler(priority EventPriority.MONITORignoreCancelled true)
        public 
    void onDamage(EntityDamageEvent e) {
            if(
    e.getCause() == DamageCause.FALL) {
                if(
    e.getEntity() instanceof Player) {
                    
    Player player = (Playere.getEntity();
                    if(
    tpList.contains(player)) {
                        
    tpList.remove(player);
                        
    e.setCancelled(true);
                    }
                }
            }
        }
     
        @
    EventHandler
        
    public void interact(PlayerInteractEvent e) {
            
    Player p e.getPlayer();
            
    ItemStack item e.getItem();
            if (
    e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK) {
                return;
            }
            if (
    e.getPlayer().getInventory().getItemInMainHand().getType() != Material.FEATHER) {
                return;
            }
            if (
    item != null && item.hasItemMeta()) {
                
    ItemMeta imeta item.getItemMeta();
                
    item.setAmount((item.getAmount() > 0) ? (item.getAmount() - 1) : 0);
                List<
    Stringlore = new ArrayList<>();
                
    lore.add("§7");
                if (
    imeta.getLore().equals(lore)) {
                    
    p.getInventory().remove(p.getInventory().getItemInMainHand());
                    if (
    e.getHand() == EquipmentSlot.HAND) {
                        
    p.getInventory().setItemInMainHand(item);
                    } else if (
    e.getHand() == EquipmentSlot.OFF_HAND) {
                        
    p.getInventory().setItemInOffHand(item);
                    }
                    
    e.setCancelled(true);
                }
                if (
    imeta.getDisplayName().equalsIgnoreCase(MTrapLeave.getInstance().getConfig().getString("messages.name"))) {
                    
    Vector vec e.getPlayer().getLocation().getDirection().setY(0).normalize().multiply(10).setY(10);
                    
    e.getPlayer().setVelocity(vec);
                    
    tpList.add(p);
                    
    int amount p.getInventory().getItemInMainHand().getAmount() + 1;
                    
    p.getInventory().getItemInMainHand().setAmount(amount 1);
                }
            }
        }

    }
     
  6. Автор темы
    BungeeHelp

    BungeeHelp Участник

    Trophy Points:
    33
    Спасибо, но это же работает на все падения.
     

Share This Page