Помогите Проверить прошел ли урон

  • Автор темы Автор темы Kurumi
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Kurumi

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Kurumi
Возможно ли проверить, прошел ли урон от оружия?
Например если бить игрока специальным мечом, ему дается иссушение, но если игрок которого бьют стоит в рг с офф. пвп, урон по нему не проходит, но эффект иссушения дается. Возможно ли как-то проверить, прошел ли урон по игроку, если он прошел, просто давать игроку которого бьют эффект иссушения. Возможно, это можно сделать через wg api, но мб есть способ проще?
 
Возможно ли проверить, прошел ли урон от оружия?
Например если бить игрока специальным мечом, ему дается иссушение, но если игрок которого бьют стоит в рг с офф. пвп, урон по нему не проходит, но эффект иссушения дается. Возможно ли как-то проверить, прошел ли урон по игроку, если он прошел, просто давать игроку которого бьют эффект иссушения. Возможно, это можно сделать через wg api, но мб есть способ проще?
Запустить свой эвент урона и проверить отменят ли его или изменят урон на 0.
Например как тут с проверкой редактирования стенда
 
Запустить свой эвент урона и проверить отменят ли его или изменят урон на 0.
Например как тут с проверкой редактирования стенда
таким образом?
PHP:
if(event.getDamage() != 0 || !event.isCancelled())
 
Хм.. Кодом выше это не работает.. Есть идеи?
 
PHP:
    @EventHandler(ignoreCancelled = true)
тоже не помогло(
 
Мальчик, учи ивенты(Вот хорошая статья от spigotmc)
А вот список
А выглядит это примерно так
Код:
@EventHandler
//Вызовется при каждом дамаге от entity к entity
public void onDamage(EntityDamageByEntityEvent e){  //entity - живое существо
if(!(event.getEntity() instanceof Player)) return;
//действия
}
 
Мальчик, учи ивенты(Вот хорошая статья от spigotmc)
А вот список
А выглядит это примерно так
Код:
@EventHandler
//Вызовется при каждом дамаге от entity к entity
public void onDamage(EntityDamageByEntityEvent e){  //entity - живое существо
if(!(event.getEntity() instanceof Player)) return;
//действия
}
Код который ты дал - у меня уже есть. Это мне понятно. Из того что ты мне написал, я понял что этот эвент вызывается каждый раз когда ентити наносит урон другому ентити, но в регионе урон не наноситя, получается, эвент не отменяется если в рг стоит pvp deny, а скорее всего изменяется урон?
 
Ну вот сам логически подумай, откуда знать крану об рг и флагах. Может быть нужно воспользоваться WorldGuard API, через него сделать проверку на флаг, а там уже делать, что тебе надо...
Короче зайди в гугол и почитай документацию WorldGuard API
 
Ну вот сам логически подумай, откуда знать крану об рг и флагах. Может быть нужно воспользоваться WorldGuard API, через него сделать проверку на флаг, а там уже регулировать хп игрокам...
Короче зайди в гугол и почитай документацию WorldGuard API
Ты тему вообще читал? Я же написал, что знаю про возможность написания этого через wg, но также я спросил, есть ли варианты попроще
 
Всё, что связано с рг, нужно делать через WorldGuard API. Иначе плагин рг-шек будет не замечать
Насколько я понял, тебе нужно сделать мечи, которые дадут эффект и урончика побольше, а в грин зонах ничего не делать
Ну дак в чём проблема? В чём сложность?
Код:
@EventHandler
//Вызовется при каждом дамаге от entity к entity
public void onDamage(EntityDamageByEntityEvent e){  //entity - живое существо
if(!(event.getEntity() instanceof Player) || !(getDamager() instanceof Player)) return;
if(/* чек флага */) {
  event.setDamage(0.0);
retrun;
}
//Всё 100 проц. игроки и пвп-зона тут давай эффекты и event.setDamage(); cтавь дамаг
}
 
Всё, что связано с рг, нужно делать через WorldGuard API. Иначе плагин рг-шек будет не замечать
Насколько я понял, тебе нужно сделать мечи, которые дадут эффект и урончика побольше, а в грин зонах ничего не делать
Ну дак в чём проблема? В чём сложность?
Код:
@EventHandler
//Вызовется при каждом дамаге от entity к entity
public void onDamage(EntityDamageByEntityEvent e){  //entity - живое существо
if(!(event.getEntity() instanceof Player) || !(getDamager() instanceof Player)) return;
if(/* чек флага */) {
  event.setDamage(0.0);
retrun;
}
//Всё 100 проц. игроки и пвп-зона тут давай эффекты и event.setDamage(0.0); cтавь дамаг
}
Видимо все-таки придется шаманить с w api....
 
делаю так
PHP:
if(event.getDamage() != 0)
}
  //todo
}
не работает. Все равно в регионе с офф. пвп игроки получают отрицательные эффекты
У тебя получается
если дамаг не равен не тому, не тому
Код:
if(event.getDamage() > 0) { //Если damage больше чем 0
/TODO
e.setCanselled(true);
return;
if(event.getDamage() < 0) {//Если 0 больше чем Damage
/TODO
e.setCanselled(true)
return;
 
У тебя получается
если дамаг не равен не тому, не тому
Код:
if(event.getDamage() > 0) { //Если damage больше чем 0
/TODO
e.setCanselled(true);
return;
if(event.getDamage() < 0) {//Если 0 больше чем Damage
/TODO
e.setCanselled(true)
return;
все равно эффект накладывается
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх