1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Как поставить кастомному мобу больше хп

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    f3azzy
    Привет!
    Нужно добавить мобу больше максимального здоровья, но я не знаю как, не получается через setMaxHealth.
    Код:
    Код:
    @EventHandler
        public void testi(PlayerInteractEvent e) {
            Player player = e.getPlayer();
            
            if(e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
            Block block = e.getClickedBlock();
            if(!(e.getPlayer().getInventory().getItemInMainHand().getType() == Material.EGG)) return;
            e.setCancelled(true);
            if(block.getType() != Material.PRISMARINE){
                e.getPlayer().sendMessage("§c[§4ERROR§c] Sorry, the call egg can only be used in the §4arena§c.");
                return;
            }
            Location locClick = block.getLocation();
            World w = Bukkit.getWorld("world");
            WorldServer world = ((CraftWorld)player.getWorld()).getHandle();
            w.spawnParticle(Particle.CLOUD, locClick, 30000);
            e.getPlayer().sendMessage("§2[§aSeccus§2] §aYou successfully summoned the boss §2Fallen Villager§a!");
            
             if (player.getInventory().getItemInMainHand().getAmount() == 1) {
                    player.getInventory().setItemInMainHand(null);
                } else {
                    player.getInventory().getItemInMainHand().setAmount(player.getInventory().getItemInMainHand().getAmount() - 1);
                }
            
            
            Runnable spawn = new Runnable() {
    
                @Override
                public void run() {
                    EntityZombie FallenVillager = new EntityZombie(world);
                    FallenVillager.setCustomName("§cFallen Villager");
                    FallenVillager.setCustomNameVisible(true);
                    FallenVillager.setHealth(400);
                    FallenVillager.setLocation(locClick.getX(), locClick.getY() + 1, locClick.getZ(), locClick.getYaw(), locClick.getPitch());
                    world.addEntity(FallenVillager);
                }
            };
            Bukkit.getScheduler().runTaskLater(plugin, spawn, 15);
            
        }
     
  2. Energy warrior

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

    Баллы:
    76
    Generics. Возьми любого моба, вскрой его НБТ и увидишь Generic.maxHealth
     
  3. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    FallenVillager.setMaxHealth(?);
    FallenVillager.setHealth(?);
    Не вижу чтобы ты указал максимальное хп
     
  4. Автор темы
    Kloper

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

    Баллы:
    76
    Имя в Minecraft:
    f3azzy
    У меня в таком случае он даже не спавнится :( версия 1.12.2
     
  5. Energy warrior

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

    Баллы:
    76
    Возьми бакитовское ентити и измени ему Generic.maxHealth.
     
  6. Автор темы
    Kloper

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

    Баллы:
    76
    Имя в Minecraft:
    f3azzy
    а другим способом никак нельзя? раньше вроде можно было на других версиях через setMaxHealth
     
  7. Energy warrior

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

    Баллы:
    76
    Я знаю только такой способ, если хочешь можешь маяться с НМС и другой хренью. Просто знай, что у энтити есть атрибуты. (забыл слово) Атрибуты могут максимальное количество здоровья изменять.
     
  8. Автор темы
    Kloper

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

    Баллы:
    76
    Имя в Minecraft:
    f3azzy
    попробовал твоим способом, всё равно моб не спавнится
    код:
    Код:
    ((Attributable) FallenVillager).getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue(400);
     
  9. Energy warrior

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

    Баллы:
    76
    Моб не спавнится?! И зачем ты его кастуешь, там же, вроде, есть метод для получения бакитовской энтити.
     
  10. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    setHealthScale вот новый метод. Он делает тоже что и костыль выше.
     
  11. Energy warrior

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

    Баллы:
    76
    Атрибуты - костыль?!
     
  12. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Конечно, метод выше делает тоже самое, внезапно. Только писать удобнее.
     
  13. Energy warrior

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

    Баллы:
    76
    Я всегда считал, что НМС - это один целый костыль и юзать его тоже костыль. А тут, внезапно, то, что добавлено в Spigot API стало костылём.
     
  14. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Я вижу тебе удобно юзать жирный метод лишним импортом, когда можно упрощенный. Как хочешь.
     
  15. Energy warrior

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

    Баллы:
    76
    Я никогда не страдал фигнёй и не делал кастомных мобов через плагины(я не о том, что создавать кастомных мобов - фигня, просто для меня не интересно), хотяяяяяяяяяя, нет всё-таки делал,но не через НМС и без атрибутов. И атрибуты я использовал только для КБ. Согласись, что не всегда хорошо зализать в "бэкэнд", чтобы сделать что-то простое.
     
  16. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Касаемо кода с шапки это полный бред согласен полностью.
     
  17. Energy warrior

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

    Баллы:
    76
    Кста да. Чем ему обычный спавнер не угодил? И особенно кровь из глаз вызывает, что эта куча кода вызывается из ивента.
     

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