Why it might not work? public function onDamage(EntityDamageByEntityEvent $ev){ $dmgr=$ev->getDamager(); $entity=$ev->getEntity(); if($dmgr instanceof Player && $entity instanceof Player){ $dm = $mt_rand(1,10); if($dm == 1 ){ $dmgr->sendMessage('§2Ты не попал по противнику'); $ev->setCancelled(); } if($dm == 3 ){ $dmgr->sendMessage('§2Ты не попал по противнику'); $ev->setCancelled(); } if($dm == 4 ){ $dmgr->sendMessage('§2Ты не попал по противнику'); $ev->setCancelled(); } if($dm == 5 ){ $dmgr->sendMessage('§2Ты не попал по противнику'); $ev->setCancelled(); } if($dm == 2) { $entity->sendMessage('§2От удара по голове у тебя появлось головокружение'); $entity->addEffect(Effect::getEffect(9)->setAmplifier(3)->setDuration(20 * 6)); } if($dm == 6) { $entity->sendMessage('§2От удара по голове у тебя появлось головокружение'); $entity->addEffect(Effect::getEffect(9)->setAmplifier(3)->setDuration(20 * 6)); } if ($dm == 7 ){ $entity->sendMessage('§2От удара в глаз ты начал хуже видеть'); $entity->addEffect(Effect::getEffect(15)->setAmplifier(3)->setDuration(20 * 6)); } if ($dm == 9 ){ $entity->sendMessage('§2От удара в глаз ты начал хуже видеть'); $entity->addEffect(Effect::getEffect(15)->setAmplifier(3)->setDuration(20 * 6)); } if ($dm == 8 ){ $entity->sendMessage('§2От сильного удара у тебя началось кровотечение'); $entity->addEffect(Effect::getEffect(20)->setAmplifier(3)->setDuration(20 * 7)); } if ($dm == 10 ){ $entity->sendMessage('§2От сильного удара у тебя началось кровотечение'); $entity->addEffect(Effect::getEffect(20)->setAmplifier(3)->setDuration(20 * 7)); } } }
public function onDamage(EntityDamageByEntityEvent $ev){ $dmgr=$ev->getDamager(); $entity=$ev->getEntity(); if($dmgr instanceof Player && $entity instanceof Player){ $dm = $mt_rand(1,10); if($dm == 1 || $dm == 3 || $dm == 4 || $dm == 5); { $dmgr->sendMessage('§2Ты не попал по противнику'); $ev->setCancelled(); } elseif($dm == 2 || $dm == 5) { $entity->sendMessage('§2От удара по голове у тебя появлось головокружение'); $entity->addEffect(Effect::getEffect(9)->setAmplifier(3)->setDuration(20 * 6)); } elseif ($dm == 7 || $dm == 9 ){ $entity->sendMessage('§2От удара в глаз ты начал хуже видеть'); $entity->addEffect(Effect::getEffect(15)->setAmplifier(3)->setDuration(20 * 6)); } elseif ($dm == 8 || $dm == 10 ){ $entity->sendMessage('§2От сильного удара у тебя началось кровотечение'); $entity->addEffect(Effect::getEffect(20)->setAmplifier(3)->setDuration(20 * 7)); } }
Try public function onDamage(EntityDamageByEntityEvent $ev) { $dmgr = $ev->getDamager(); $entity = $ev->getEntity(); if ($dmgr instanceof Player && $entity instanceof Player) { $dm = $mt_rand(1, 10); if ($dm == 1 || $dm == 2 || $dm == 3 || $dm == 4) { $dmgr->sendMessage('§2Ты не попал по противнику'); } elseif ($dm == 5 || $dm == 6) { $entity->sendMessage('§2От удара по голове у тебя появлось головокружение'); $entity->addEffect(Effect::getEffect(9)->setAmplifier(3)->setDuration(20 * 6)); } elseif ($dm == 7 || $dm == 8) { $entity->sendMessage('§2От удара в глаз ты начал хуже видеть'); $entity->addEffect(Effect::getEffect(15)->setAmplifier(3)->setDuration(20 * 6)); } elseif ($dm == 9 || $dm == 10) { $entity->sendMessage('§2От сильного удара у тебя началось кровотечение'); $entity->addEffect(Effect::getEffect(20)->setAmplifier(3)->setDuration(20 * 7)); } }
if only there were less than / greater than operators in php... huh. hint: http://php.net/manual/en/language.operators.comparison.php
here, try this: PHP: /*** @param EntityDamageEvent $ev* @priority LOWEST*/public function onEntityDamage(EntityDamageEvent $ev): void{ $victim = $ev->getEntity(); if($ev instanceof EntityDamageByEntityEvent){ $damager = $ev->getDamager(); if($victim instanceof Player && $damager instanceof Player){ $effects = [ new EffectInstance(Effect::getEffect(Effect::CONFUSION), 20 * 6, 3), new EffectInstance(Effect::getEffect(Effect::BLINDNESS), 20 * 6, 3), new EffectInstance(Effect::getEffect(Effect::WITHER), 20 * 6, 3) ]; if(mt_rand(1, 10) > 4){ $victim->addEffect($effects[array_rand($effects)]); } } }}
Tip: you no longer need to check $event instanceof EntityDamageByEntityEvent. You could directly put EntityDamageByEntityEvent in the parameter type. (It has actually been fixed for ages)