Войти или зарегистрироваться

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

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

Minimalix9

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

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

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

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

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

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

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

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

Код:
var1.getLocation().distance(var2)

var1 - игрок, блок, сущность
var2- игрок, блок, сущность

для примера мой метод на локальный чат
upload_2022-11-1_23-52-20.png


о создании плагинов
тут скорее основы джавы учить, он даже по названиям методов ничо найти не может:mad:
 
"в радиусе 30 блоков от сундука нельзя было ломать блоки"

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

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

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

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

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

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

В крайнем случае можно посмотреть пару видосов на Ютубе о создании плагинов и обязательно попрактиковаться самостоятельно, чтобы начать понимать хотя бы основы
Спасибо, я понял
 
Ответ сверху исчерпывающий, могу лишь добавить, что дистанцию можно получить так :nerd:

Код:
var1.getLocation().distance(var2)

var1 - игрок, блок, сущность
var2- игрок, блок, сущность

для примера мой метод на локальный чат
Посмотреть вложение 63686



тут скорее основы джавы учить, он даже по названиям методов ничо найти не может:mad:
Спасибо
 
"в радиусе 30 блоков от сундука нельзя было ломать блоки"

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

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

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

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

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

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

В крайнем случае можно посмотреть пару видосов на Ютубе о создании плагинов и обязательно попрактиковаться самостоятельно, чтобы начать понимать хотя бы основы
Можешь на 1 твой ответ дать небольшой пример кодом ?
 
Можешь на 1 твой ответ дать небольшой пример кодом ?
Именно как сравнить дистанцию. Допустим у меня есть x y z на рандомные кордах и если я правильно понимаю то надо что то по типу x<30 && y < 30 && z < 30 ?
 
Только как заменить e.getplayer().getlocation() на x y z
 
Только как заменить e.getplayer().getlocation() на x y z

int x = e.getplayer().getlocation().getX()
int y = e.getplayer().getlocation().getY()
int z = e.getplayer().getlocation().getZ()

не помню как там получить точные координаты с дробной частью, у блоков getBlockX, getBlockY, getBlockZ
 
int x = e.getplayer().getlocation().getX()
int y = e.getplayer().getlocation().getY()
int z = e.getplayer().getlocation().getZ()

не помню как там получить точные координаты с дробной частью, у блоков getBlockX, getBlockY, getBlockZ
У меня уже есть xyz я хз как их вместить в этот метод
 
В какой метод?
location.set(x, y, z);
Код:
@EventHandler
public void air2(BlockBreakEvent e) {
    if(e.getBlock().getLocation().distance(e.getBlock().getLocation()) < radiusbreakblock){
        //код
    }
}
public static int radiusbreakblock = 30;
}
Только куда x y z вставить ?
 
Последнее редактирование:
Код:
@EventHandler
public void air2(BlockBreakEvent e) {
    if(e.getBlock().getLocation().distance(e.getBlock().getLocation()) < radiusbreakblock){
        //код
    }
}
public static int radiusbreakblock = 30;
}
Только куда x y z вставить ?
чё ты сделать то хочешь, не пойму
 
Код:
@EventHandler
public void air2(BlockBreakEvent e) {
    if(e.getBlock().getLocation().distance(e.getBlock().getLocation()) < radiusbreakblock){
        //код
    }
}
public static int radiusbreakblock = 30;
}
Только куда x y z вставить ?
Ну ты посмотри хоть что делаешь. Ты проверяешь дистанцию от блока до этого же блока.
Проверяй хоть так, для начала:
Код:
new Location(world, x, y, z).distance(e.getBlock().getLocation()) < radiusbreakblock
 
Ну ты посмотри хоть что делаешь. Ты проверяешь дистанцию от блока до этого же блока.
Проверяй хоть так, для начала:
Код:
new Location(world, x, y, z).distance(e.getBlock().getLocation()) < radiusbreakblock
Все спасибо и последнее можешь сказать как называется ивент когда игрок ставит блок?
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх