Помогите Спавн моба при ломание блока

Кизяка

Активный участник
Баллы
61
Ребят помогите пожалуйста как сделать Спавн моба Овца, при ломание блока Земли.
 
Код:
// в идеале сделать отдельный класс для слушателя, но т.к плагин не особо крупный, можно сделать здесь.
public class MyPlugin extends JavaPlugin implements Listener {

  @Override
  public void onEnable() {
      // Сообщаем серверу о том, что мы слушаем эвенты
      getServer().getPluginManager().registerEvents(this, this);
  }

  // priority = MONITOR, чтобы другие плагины могли отменить его (обработается в последнюю очередь)
  // ignoreCancelled = true, чтобы если его отменили, он не обработался в нашем листенере,
  // потому что если его отменят, то блок не удалится, а овца заспавнится в нем
  //
  // Обязательно нужна аннотация EventHandler, чтобы пометить метод обработчиком, иначе сервер его не увидит
  @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
  public void onBlockBreak(BlockBreakEvent event) {
    Block block = event.getBlock();
 
    // Проверяем тип блока, если это НЕ земля, то пропускаем
    if (block.getType() != Material.DIRT) {
      return;
    }

    World world = block.getWorld();

    // Спавним энтити по центру блока
    world.spawn(block.getLocation().add(.5, .5, .5), Sheep.class);
  }
}

Писал от руки, если будут очепятки, то сори)
 
Код:
// в идеале сделать отдельный класс для слушателя, но т.к плагин не особо крупный, можно сделать здесь.
public class MyPlugin extends JavaPlugin implements Listener {

  @Override
  public void onEnable() {
      // Сообщаем серверу о том, что мы слушаем эвенты
      getServer().getPluginManager().registerEvents(this, this);
  }

  // priority = MONITOR, чтобы другие плагины могли отменить его (обработается в последнюю очередь)
  // ignoreCancelled = true, чтобы если его отменили, он не обработался в нашем листенере,
  // потому что если его отменят, то блок не удалится, а овца заспавнится в нем
  //
  // Обязательно нужна аннотация EventHandler, чтобы пометить метод обработчиком, иначе сервер его не увидит
  @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
  public void onBlockBreak(BlockBreakEvent event) {
    Block block = event.getBlock();
 
    // Проверяем тип блока, если это НЕ земля, то пропускаем
    if (block.getType() != Material.DIRT) {
      return;
    }

    World world = block.getWorld();

    // Спавним энтити по центру блока
    world.spawn(block.getLocation().add(.5, .5, .5), Sheep.class);
  }
}

Писал от руки, если будут очепятки, то сори)
В голос.
 
Код:
  // если его отменили, он не обработался в нашем листенере,
  // потому что если его отменят, то блок не удалится, а овца заспавнится в нем

А почему бы не сделать проверку на то, что ивент отменили? Методом event.isCancelled()
 
Назад
Верх