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

Помогите Разные зомби

Статус
Закрыто для дальнейших ответов.

musel70

Активный участник
Пользователь
Баллы
88
Подскажите, почему это не работает, где ошибка?
Код:
package Wizards;
import java.util.Random;
 
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.plugin.java.JavaPlugin;
 
public class mainClass extends JavaPlugin implements Listener
{
    private Random rnd;
    @EventHandler
    public void OnEnable()
    {
        rnd = new Random();
        getLogger().info("Wizards was enabled");
    }
    public void OnDisable()
 
    {
        getLogger().info("Wizards was disabled");
    }
    @EventHandler
    public void OnEntitySpawn(CreatureSpawnEvent e)
    {
        LivingEntity ent = e.getEntity();
        if (e.getEntityType() == EntityType.GHAST )
        {
            byte m = (byte) rnd.nextInt(3);
                if (m==0)
                {
                 
                    ent.setCustomName("Ghost");
                    ent.setCustomNameVisible(true);
                    ent.setMaxHealth(50);
                }
                if (m==1)
                {
                    ent.setCustomName("Shadow");
                    ent.setCustomNameVisible(true);
                    ent.setMaxHealth(20);
                }
                if (m==2)
                {
                    ent.setCustomName("Ghast");
                    ent.setCustomNameVisible(true);
                    ent.setMaxHealth(100);
                }
        }
         
     
    }
    public void OnEntityDamage(EntityDamageByEntityEvent e)
    {
        LivingEntity ent = (LivingEntity) e.getEntity();
        if (ent.getCustomName() != null)
        {
            if (e.getDamage()<= ent.getHealth())
            {
                ent.setHealth(ent.getHealth()-e.getDamage());
            }
            else
            {
                ent.setHealth(0);
            }
        }
    }
}
Ой неправильно тему назвал (Гасты разные
 
Скиньте скрин консоли, когда ошибка.
 
А прикол в том что там нет ошибки( просто не работает)
 
Код:
private Random rnd;
    @EventHandler
    public void OnEnable()
    {
        rnd = new Random();
        getLogger().info("Wizards was enabled");
    }
    public void OnDisable()
 
    {
        getLogger().info("Wizards was disabled");
    }
замените на
Код:
private Random rnd;
    @Override
    public void OnEnable()
    {
        getServer().getPluginManager().registerEvents(this, this);
        rnd = new Random();
        getLogger().info("Wizards was enabled");
    }
    @Override
    public void OnDisable()
 
    {
        getLogger().info("Wizards was disabled");
    }

Перед
public void OnEntityDamage(EntityDamageByEntityEvent e)
тоже нужно поставить @EventHandler
 
h7wn6zkjosm1.jpg
Исправил, ничего не изменилось
 
Регистр кто соблюдать будет? Названия методов пишутся с маленькой буквы. Тоесть не OnEnable, а onEnable(Также и onDisable)
 
Ну без тех правок он бы тоже не пошел)
Я тоже хотел написать про регистрацию событий, но ты уже ответил:)
Я тоже иногда, нагородив всякой бяки, испоганю нормальный код, а такие мелочи в последний момент замечаю:D
 
Там не только регистрация событий, у onEnable() почему-то аннотация ивента стояла)
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх