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

Помогите сразу после разрушения игроком на это же место ставился блок.

Тема в разделе "Разработка плагинов для новичков", создана пользователем fedortik, 5 июл 2023.

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

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

    Баллы:
    61
    Имя в Minecraft:
    FEDORTIK
    Нужно что бы сразу после разрушения игроком на это же место ставился блок. Пробовал через ивент отслеживающий разрушения блока, но setType меняет тип выпавшего блока, а не Air который образовался после разрушения блока
     
  2. GameMaster

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

    Баллы:
    66
    location.getBlock().setType()
     
  3. Автор темы
    fedortik

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

    Баллы:
    61
    Имя в Minecraft:
    FEDORTIK
    Пробовал, изменится тип блока который выпадает, а мне нужно поставить новый блок
     
  4. AgentJhonny

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

    Баллы:
    66
    Это логично, что ивент срабатывает до самого ломания блока, дабы его можно было отменить. Ставь через несколько тиков:
    Код:
    Bukkit.getScheduler().runTaskLater(plugin, () -> block.setType(material), 1L);
     
  5. NoLogic

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

    Баллы:
    66
    Это вообще не логично. Дроп блока нельзя изменить через BlockBreakEvent, там попросту нет подобной функции. Через BlockDropItemEvent, кстати, это тоже лучше не делать, хотя такая опция есть, если я не ошибаюсь. BlockDropItemEvent#getItems() вернёт мутабельный лист блоков, т. е. можно добавить/удалить нужный Item (не ItemStack), но в документации спигота написано, что добавление дропа таким способом нелегально, что логично. Советую ОПу перепроверить код. Ещё лучше — запостить. Ну и доки тоже почитать не помешало бы.

    https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/block/BlockBreakEvent.html
    https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/block/BlockDropItemEvent.html
     
  6. AgentJhonny

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

    Баллы:
    66
    Ответ из разряда "лишь бы вставить свою копейку". Где ТС просил менять дроп?
     
  7. NoLogic

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

    Баллы:
    66
    Третий пост внимательно прочитай. Я всего-то разъяснил ситуацию.
     
  8. VladNotch

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

    Баллы:
    76
    Если тебе надо просто чтобы игроки не могли ломать блок, то почему бы тебе не отслеживать ломание блока в листенере и не выполнять event.setCancelled(true)?
     
  9. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Должна ли уменьшаться прочность предмета в руке при разрушении блока?
    Должен ли блок дропаться в виде предмета после разрушения?
     

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