Помогите чтобы у меня не спаунились лошадки (и остальные того же вида) при натуральном спауне и генерации.

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

HauserGrim

Активный участник
Пользователь
Баллы
96
Короче говоря, хочу, чтобы у меня не спаунились лошадки (и остальные того же вида, т.е. ослики и мулы) при натуральном спауне и генерации.
Не кодер и кодить не умею, но что-то сделал, что не выдавало ошибок компилятором.
Код:
package hausergrim;

import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
import org.bukkit.entity.EntityType;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {

  public void onSpawn(CreatureSpawnEvent e) {
    e.getSpawnReason();
    if(e.getSpawnReason() == SpawnReason.NATURAL);
    else if(e.getSpawnReason() == SpawnReason.CHUNK_GEN);
    {
      if(e.getEntityType().equals(EntityType.HORSE));
      else if(e.getEntityType().equals(EntityType.DONKEY));
      else if(e.getEntityType().equals(EntityType.MULE));
      {
        e.setCancelled(true);
      }
    }
  }
}
 
Короче говоря, хочу, чтобы у меня не спаунились лошадки (и остальные того же вида, т.е. ослики и мулы) при натуральном спауне и генерации.
Не кодер и кодить не умею, но что-то сделал, что не выдавало ошибок компилятором.
Код:
package hausergrim;

import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
import org.bukkit.entity.EntityType;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {

  public void onSpawn(CreatureSpawnEvent e) {
    e.getSpawnReason();
    if(e.getSpawnReason() == SpawnReason.NATURAL);
    else if(e.getSpawnReason() == SpawnReason.CHUNK_GEN);
    {
      if(e.getEntityType().equals(EntityType.HORSE));
      else if(e.getEntityType().equals(EntityType.DONKEY));
      else if(e.getEntityType().equals(EntityType.MULE));
      {
        e.setCancelled(true);
      }
    }
  }
}
Не много ли точек с запятой? Да и результат условий где, ты их else поперекрывал
upload_2019-1-24_18-15-30.png
 

Вложения

  • upload_2019-1-24_18-14-56.png
    upload_2019-1-24_18-14-56.png
    4,8 КБ · Просмотры: 6
Код:
    else if(e.getSpawnReason() == SpawnReason.CHUNK_GEN);
    {
      if(e.getEntityType().equals(EntityType.HORSE));
      else if(e.getEntityType().equals(EntityType.DONKEY));
      else if(e.getEntityType().equals(EntityType.MULE));
      {
        e.setCancelled(true);
      }
    }
А вот здесь точно скобки { } нужны? Или ; убрать надо. Уже второй пост с такими вижу.
 
Код:
if(e.getSpawnReason() == SpawnReason.CHUNK_GEN && e.getEntityType().equals(EntityType.MULE)
    e.setCancelled(true);
Остальное-то незачем
 
Код:
if(e.getSpawnReason() == SpawnReason.CHUNK_GEN && e.getEntityType().equals(EntityType.MULE)
    e.setCancelled(true);
Остальное-то незачем
Сказано же - для всех видов лошадей.
Максимум, что тут сработает:
e instanceof Horse
 
Сказано же - для всех видов лошадей.
Максимум, что тут сработает:
e instanceof Horse
хз, не читал сам пост, посмотрел тока на код
ну тогда да, все условия через связку "ИЛИ" объеденить
 
Последнее редактирование:
Хз, попробуй так
PHP:
@EventHandler(ignoreCancelled = true)
void onSpawn(CreatureSpawnEvent event) {
    CreatureSpawnEvent.SpawnReason reason = event.getSpawnReason();
    if ((reason == CreatureSpawnEvent.SpawnReason.CHUNK_GEN || reason == CreatureSpawnEvent.SpawnReason.NATURAL) && (event.getEntity() instanceof Horse)) {
            event.setCancelled(true);
    }
}
 
Последнее редактирование:
Дошел к вот этому, но это не работает
Код:
package hausergrim;

import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
import org.bukkit.entity.EntityType;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {

  public void onSpawn(CreatureSpawnEvent e) {
      
    e.getSpawnReason();
    if(e.getSpawnReason() == SpawnReason.NATURAL || e.getSpawnReason() == SpawnReason.CHUNK_GEN && e.getEntityType().equals(EntityType.HORSE) || e.getEntityType().equals(EntityType.DONKEY) || e.getEntityType().equals(EntityType.MULE))
    {
      e.setCancelled(true);
    }
  }
}


Хз, попробуй так
PHP:
@EventHandler(ignoreCancelled = true)
void onSpawn(CreatureSpawnEvent event) {
    CreatureSpawnEvent.SpawnReason reason = event.getSpawnReason();
    if ((reason == CreatureSpawnEvent.SpawnReason.CHUNK_GEN || reason == CreatureSpawnEvent.SpawnReason.NATURAL) && (event.getEntity() instanceof Horse)) {
            event.setCancelled(true);
    }
}
Сейчас попробую
 
Дошел к вот этому, но это не работает
Код:
package hausergrim;

import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
import org.bukkit.entity.EntityType;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {

  public void onSpawn(CreatureSpawnEvent e) {
     
    e.getSpawnReason();
    if(e.getSpawnReason() == SpawnReason.NATURAL || e.getSpawnReason() == SpawnReason.CHUNK_GEN && e.getEntityType().equals(EntityType.HORSE) || e.getEntityType().equals(EntityType.DONKEY) || e.getEntityType().equals(EntityType.MULE))
    {
      e.setCancelled(true);
    }
  }
}



Сейчас попробую
А ивент регать, не?
 
Делай отладку, выводи причину спавна, тип энтити и т.д., смотри что не подходит под условие.
 
А ивент регать, не?
ООооо, да тут на столько...
PHP:
public final class Main extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        super.onEnable();
        Bukkit.getPluginManager().registerEvents(this, this);
        getLogger().info("Plugin ON!");
    }


    @EventHandler(ignoreCancelled = true)
    void onSpawn(CreatureSpawnEvent event) {
        CreatureSpawnEvent.SpawnReason reason = event.getSpawnReason();
        if ((reason == CreatureSpawnEvent.SpawnReason.CHUNK_GEN || reason == CreatureSpawnEvent.SpawnReason.NATURAL) && (event.getEntity() instanceof Horse)) {
            event.setCancelled(true);
        }
    }
    
    @Override
    public void onDisable() {
        super.onDisable();
        getLogger().info("Plugin OFF!");
    }

}
 
Да я с самого начала сказал что ничего не умею и тяп ляп, пока ошибки не перестало показывать, и готово.
 
Да я с самого начала сказал что ничего не умею и тяп ляп, пока ошибки не перестало показывать, и готово.
Дичь, про эвенты ты как то узнал, а про то, что на них нужно подписываться для прослушивания нет?
 
Дичь, про эвенты ты как то узнал, а про то, что на них нужно подписываться для прослушивания нет?
Да я такой, я почему-то часто не знаю самых базовых вещей.
Было как-то тупо смотреть примеры в некоторых плагинах, но не смотреть как они начинаются...
 
Да я такой, я почему-то часто не знаю самых базовых вещей.
Было как-то тупо смотреть примеры в некоторых плагинах, но не смотреть как они начинаются...
Короче, ты проверил? Я тебе всё скинул - иди тести.
 
Ну естественно, в коде проверка только на лошадей.
Осталось осознать instanceof, но сегодня я уже думать не хочу.
Спасибо всем за помощь (а точнее проделанную за меня работу (шутка))
Завтра осликов прикручу, а сейчас спать пойду.
 
Осталось осознать instanceof, но сегодня я уже думать не хочу.
Спасибо всем за помощь (а точнее проделанную за меня работу (шутка))
Завтра осликов прикручу, а сейчас спать пойду.
Спаунятся, да, потому что не наследуют класс Horse, как выяснилось.
Зато есть AbstractHorse, вот он тебе и нужен.
Его наследуют и лошади, и мулы и прочие парнокопытные.

instanceof - дословно "является".
Получится "если (моб является абстрактной лошадью)".
К абстрактным лошадям относятся:
ChestedHorse, Donkey, Horse, Llama, Mule, SkeletonHorse, ZombieHorse
Источник: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/AbstractHorse.html
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх