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

Помогите (решено) Нельзя ломать блоки в радиусе 20 блоков

Тема в разделе "Разработка плагинов для новичков", создана пользователем Minimalix9, 1 ноя 2022.

Метки:
Статус темы:
Закрыта.
  1. Автор темы
    Minimalix9

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

    Баллы:
    66
    Доброго времени суток!!
    Я начинающий кодер и у мен возник вопрос, как сделать чтобы допустив в радиусе 30 блоков от сундука нельзя было ломать блоки или допустим заспавнился блок и 10 секунд нельзя к нему подходить ближе чем на 30 блоков. И ещё один вопрос как оттолкнуть игрока когда он подходит к блоку или допустим не оттолкнуть а выключит гм или тд. Прошу помогите если не сложно!!!
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    "в радиусе 30 блоков от сундука нельзя было ломать блоки"

    При событии разрушения блока получать локацию разрушаемого блока, получать локацию сундука, после чего посчитать их дистанцию и сравнить с числом 30. Если больше, то отменить событие.

    "заспавнился блок и 10 секунд нельзя к нему подходить ближе чем на 30 блоков"

    При спауне сундука заполняешь числовую переменную текущим временем.
    В событии передвижения игрока получаешь текущее время и сравниваешь его со значением из числовой переменной (считаешь разницу во времени). Если прошло меньше 10-и секунд, то получаешь расстояние до сундука, если оно меньше 30 блоков, то отменяешь событие.

    "как оттолкнуть игрока"
    Задать ему вектор движения при помощи player.setVelocity()

    "выключит гм"
    Использовать player.setGameMode()

    У тебя очень много вопросов, они очень абстрактные. Это как спросить "а как сделать ракету?". Ответ слишком большой, на него нет короткого ответа. Мы не можем научить тебя программировать. Поэтому я рекомендую тебе начать изучение джавы с простейших консольных приложений, где ты легко и быстро сможешь увидеть результат своих действий без лишних заморочек.

    В крайнем случае можно посмотреть пару видосов на Ютубе о создании плагинов и обязательно попрактиковаться самостоятельно, чтобы начать понимать хотя бы основы
     
  3. neverlessy

    neverlessy Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    neverlessy
    Ответ сверху исчерпывающий, могу лишь добавить, что дистанцию можно получить так :nerd:

    Код:
    var1.getLocation().distance(var2)
    
    var1 - игрок, блок, сущность
    var2- игрок, блок, сущность
    для примера мой метод на локальный чат
    upload_2022-11-1_23-52-20.png


    тут скорее основы джавы учить, он даже по названиям методов ничо найти не может:mad:
     
  4. Автор темы
    Minimalix9

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

    Баллы:
    66
    Спасибо, я понял
     
  5. Автор темы
    Minimalix9

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

    Баллы:
    66
    Спасибо
     
  6. Автор темы
    Minimalix9

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

    Баллы:
    66
    Можешь на 1 твой ответ дать небольшой пример кодом ?
     
  7. Автор темы
    Minimalix9

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

    Баллы:
    66
    Именно как сравнить дистанцию. Допустим у меня есть x y z на рандомные кордах и если я правильно понимаю то надо что то по типу x<30 && y < 30 && z < 30 ?
     
  8. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    @neverlessy же кинул отрывок кода для получения и сравнения дистанций.
     
  9. Автор темы
    Minimalix9

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

    Баллы:
    66
    Aaaaa я не заметил
     
  10. Автор темы
    Minimalix9

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

    Баллы:
    66
    Только как заменить e.getplayer().getlocation() на x y z
     
  11. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Можешь просто создать новую локацию new Location(world, x, y, z), либо посчитать расстояние самому тригонометрией.
     
  12. neverlessy

    neverlessy Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    neverlessy
    int x = e.getplayer().getlocation().getX()
    int y = e.getplayer().getlocation().getY()
    int z = e.getplayer().getlocation().getZ()

    не помню как там получить точные координаты с дробной частью, у блоков getBlockX, getBlockY, getBlockZ
     
  13. Автор темы
    Minimalix9

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

    Баллы:
    66
    У меня уже есть xyz я хз как их вместить в этот метод
     
  14. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    В какой метод?
    location.set(x, y, z);
     
  15. Автор темы
    Minimalix9

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

    Баллы:
    66
    Код:
    @EventHandler
    public void air2(BlockBreakEvent e) {
        if(e.getBlock().getLocation().distance(e.getBlock().getLocation()) < radiusbreakblock){
            //код
        }
    }
    public static int radiusbreakblock = 30;
    }
    Только куда x y z вставить ?
     
    Последнее редактирование: 3 ноя 2022
  16. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    чё ты сделать то хочешь, не пойму
     
  17. Автор темы
    Minimalix9

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

    Баллы:
    66
    Чтобы типо не ломались блоки
     
  18. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Ну ты посмотри хоть что делаешь. Ты проверяешь дистанцию от блока до этого же блока.
    Проверяй хоть так, для начала:
    Код:
    new Location(world, x, y, z).distance(e.getBlock().getLocation()) < radiusbreakblock
     
  19. Автор темы
    Minimalix9

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

    Баллы:
    66
    Все спасибо и последнее можешь сказать как называется ивент когда игрок ставит блок?
     
  20. Limon-mine

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

    Баллы:
    76
    Имя в Minecraft:
    Limon_MineDel
    BlockPlaceEvent
     
Статус темы:
Закрыта.

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