- Баллы
- 103
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Вы не поняли, hasBlock() это не наличие блока в руках, а блокирование доспутим мечом как аналог RIGHT_CLICK_BLOCK'уПопробуй через BlockDamageEvent
hasBlock() это:Вы не поняли, hasBlock() это не наличие блока в руках, а блокирование доспутим мечом как аналог RIGHT_CLICK_BLOCK'у
public boolean hasBlock()
{
//Проверка блока на null
return this.blockClicked != null;
}
Пардон, моя ошибка, но вопрос все же остается так как я могу заменить hasBlock() на while(e.getAction == Action.RIGHT_CLICK_BLOCK)hasBlock() это:
Код:public boolean hasBlock() { //Проверка блока на null return this.blockClicked != null; }

Объясни понятнее, что ты хочешьПардон, моя ошибка, но вопрос все же остается так как я могу заменить hasBlock() на while(e.getAction == Action.RIGHT_CLICK_BLOCK)
Пока игрок зажимает пкм с предметом которым можно блокировать, например меч, нужно снижать получаемый уронОбъясни понятнее, что ты хочешь
Эвент клика мышкой вызывается разово, тоесть нельзя узнать, что вот игрок зажал мышь. На голову ничего больше не приходит кроме записи времени последнего интеракта и сравнения его со временем удараПока игрок зажимает пкм с предметом которым можно блокировать, например меч, нужно снижать получаемый урон
Мне нужно реализовать что то на подобие щитов, но если использовать ваш метод, то игрокам придется подбирать точное время когда происходит удар и успеть ставить щит, хотелось бы что бы можно было зажать и держать и блочить удары, но я так понял теперь придется прибегать реализации через модЭвент клика мышкой вызывается разово, тоесть нельзя узнать, что вот игрок зажал мышь. На голову ничего больше не приходит кроме записи времени последнего интеракта и сравнения его со временем удара
Если зажать мышь, эвент вызывается раз в пол секунды, каждый раз записывать время...Мне нужно реализовать что то на подобие щитов, но если использовать ваш метод, то игрокам придется подбирать точное время когда происходит удар и успеть ставить щит, хотелось бы что бы можно было зажать и держать и блочить удары, но я так понял теперь придется прибегать реализации через мод
Пока игрок зажимает пкм с предметом которым можно блокировать, например меч, нужно снижать получаемый урон
@EventHandler
public void onPlayerDamage(EntityDamageByEntityEvent e){
if(event.getEntity().getType() == EntityType.PLAYER){
Player player = (Player)event.getEntity();
ItemStack item = player.getItemInHand();
if(item == null) return;
if(item.getType() == Material.DIAMOND_SWORD){
if(player.isBlocking()){
int damage = event.getDamage();
int minus = 5;
event.setDamage(damage - minus);
}
}
}
}
}
Возможно тс хочет такое не только с мечом, но и с досками, например, где уже ванильные методы не помогут.Мб сработает.Код:@EventHandler public void onPlayerDamage(EntityDamageByEntityEvent e){ if(event.getEntity().getType() == EntityType.PLAYER){ Player player = (Player)event.getEntity(); ItemStack item = player.getItemInHand(); if(item == null) return; if(item.getType() == Material.DIAMOND_SWORD){ if(player.isBlocking()){ int damage = event.getDamage(); int minus = 5; event.setDamage(damage - minus); } } } } }
Во, вы выручили меня, спасибо! Сделал вот такВо-во. event.getEntity().isBlocking()
Не забудьте проверять entity на игрока.Во, вы выручили меня, спасибо! Сделал вот так
if (((HumanEntity) e.getEntity()).isBlocking()){}
Да конечно, e.getEntity() instanceof PlayerНе забудьте проверять entity на игрока.
Лучше e.getEntity().getType() == EntityType.PLAYERДа конечно, e.getEntity() instanceof Player