Вопрос Какие аргументы ставить в Bukkit.getPluginManager().registerEvents(new NewPiglinBarterEvent(), this)?

Версия Minecraft
1.20.X

LimeMC

Пользователь
Сообщения
52
Java:
Bukkit.getPluginManager().registerEvents(new NewPiglinBarterEvent([B]...[/B]), this);
я не знаю что поставить вместо ... )

PiglinBarterEvent принимает what, input, outcome

но я не понимаю, откуда их взять в registerEvents

offtop да я тупой
 
Решение
да но как мне его поменять? я же его только получаю. мб создать new PiglinBarterEvent(и сюда запихнуть измененное старое)
Java:
public class MyPlugin extends JavaPlugin implements Listener {

  @Override
  public void onEnable() {
    Bukkit.getPluginManager().registerEvents(this, this);
  }

  @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
  public void onPiglinBarter(PiglinBarterEvent e) {
    final ItemStack myItem = new ItemStack(Material.STONE);
    final List<ItemStack> outcome = e.getOutcome();

    outcome.clear();
    outcome.add(myItem);
  }
}
Несмотря на то, что здесь явное непонимание принципов и устройства присутствует, документация по ивенту:
 
Последнее редактирование:
Несмотря на то, что здесь явное непонимание принципов и устройства присутствует, документация по ивенту:
Так там не написано вроде
 
Так там не написано вроде
Все написано, просто, видимо, не с того начинаешь. Попроси нейросетку написать тебе то, что ты хочешь, там, может быть, станет понятнее. Ну или обратись к гайдам по разработке плагинов для новичков. Второе предпочтительнее.
 
покажи ка так называемый класс NewPiglinBarterEvent
Java:
public class NewPiglinBarterEvent extends PiglinBarterEvent {
        public NewPiglinBarterEvent(@NotNull Piglin what, @NotNull ItemStack input, @NotNull List<ItemStack> outcome) {
        super(what, input, outcome);
        this.input = input;
        this.outcome = outcome;
    }
}
 
Java:
public class NewPiglinBarterEvent extends PiglinBarterEvent {
        public NewPiglinBarterEvent(@NotNull Piglin what, @NotNull ItemStack input, @NotNull List<ItemStack> outcome) {
        super(what, input, outcome);
        this.input = input;
        this.outcome = outcome;
    }
}
а зачем собственно ты делаешь для этого отдельный класс? и для чего ты регистрируешь не ивент листенер, а напрямую ивент (как ты собираешься это делать)? и насчёт твоего вопроса, тут буквально написано. what - пиглин, input - входной предмет, list<itemstack> - список с выходными предметами
 
если тебе ТАК нужно сделать свой собственный класс для этого, слушай ивент PiglinBarterEvent и вызывай свой "новый" с помощью Bukkit.getServer().getPluginManager().callEvent(new NewPiglinBarterEvent(event.getEntity(), event.getInput(), event.getOutput()))
но extends PiglinBarterEvent замени на extends Event и добавь нужные методы. (иначе он будет рекурсивно вызывать сам себя)
Объединено

подробнее о кастомных ивентах с примерами можешь узнать тут -
 
Последнее редактирование:
если тебе ТАК нужно сделать свой собственный класс для этого, слушай ивент PiglinBarterEvent и вызывай свой "новый" с помощью Bukkit.getServer().getPluginManager().callEvent(new NewPiglinBarterEvent(event.getEntity(), event.getInput(), event.getOutput()))
но extends PiglinBarterEvent замени на extends Event и добавь нужные методы. (иначе он будет рекурсивно вызывать сам себя)
Объединено

подробнее о кастомных ивентах с примерами можешь узнать тут -
Понял спасибо
Объединено

а зачем собственно ты делаешь для этого отдельный класс? и для чего ты регистрируешь не ивент листенер, а напрямую ивент (как ты собираешься это делать)? и насчёт твоего вопроса, тут буквально написано. what - пиглин, input - входной предмет, list<itemstack> - список с выходными предметами
Мне просто надо поменять outcome)
 
Последнее редактирование:
мб создать new PiglinBarterEvent(и сюда запихнуть измененное старое)
нет. он будет рекурсивно вызывать сам себя

да но как мне его поменять?
метод не создаёт новый экземпляр, а лишь даёт ссылку на объект. в чём проблема ему подредактировать содержимое
 
да но как мне его поменять? я же его только получаю. мб создать new PiglinBarterEvent(и сюда запихнуть измененное старое)
Java:
public class MyPlugin extends JavaPlugin implements Listener {

  @Override
  public void onEnable() {
    Bukkit.getPluginManager().registerEvents(this, this);
  }

  @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
  public void onPiglinBarter(PiglinBarterEvent e) {
    final ItemStack myItem = new ItemStack(Material.STONE);
    final List<ItemStack> outcome = e.getOutcome();

    outcome.clear();
    outcome.add(myItem);
  }
}
 
Java:
public class MyPlugin extends JavaPlugin implements Listener {

  @Override
  public void onEnable() {
    Bukkit.getPluginManager().registerEvents(this, this);
  }

  @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
  public void onPiglinBarter(PiglinBarterEvent e) {
    final ItemStack myItem = new ItemStack(Material.STONE);
    final List<ItemStack> outcome = e.getOutcome();

    outcome.clear();
    outcome.add(myItem);
  }
}
всем спасибо)
а как закрыть тему? 0_0
 
Назад
Сверху Снизу