I have recently coded this. My first time dealing with KnockBack in a plugin. And everytime I start up the server it gets disabled . I need someone to point out my errors and help me correct them. PHP: <?phpnamespace KB;use pocketmine\plugin\PluginBase;use pocketmine\event\Listener;use pocketmine\level\sound\BlazeShootSound;use pocketmine\event\entity\EntityDamageByEntityEvent;class KnockBack extends PluginBase implements Listener{ public function onEnable(){ $this->getServer()->getPluginManager()->registerEvents($this, $this); } public function onLoad(){ $this->getLogger()->info("KnockBack §aenabled"); } public function onDamage(EntityDamageByEntityEvent $event){ $entity = $event->getEntity(); $fizz = new BlazeShootSound($entity); $entity->getLevel()->addSound($fizz); $entity->knockBack($entity, 0, 1, 0, 1); } public function onDisable(){ $this->getLogger()->info("KnockBack §cdisabled."); return true; }} Thanks in advance
Yep, sorry for late reply Code: Pocketmine\utils\PluginException: "pocketmine\event\entity\EntituDamageByEntityEvent does not have a handler list "(EXCEPTION) in "src/pocketmine/plugin/PluginManager " at line 764
$event->setKnockBack(knockback number); 0.5 = normal numbers like 1 or 2 is pretty strong my bad dont mind this ur code is correct maybe just misinh things such as EntityDamageEvent
Try this PHP: public function onDamage(EntityDamageEvent $event){ $entity = $event->getEntity(); if($event instanceof EntityDamageByEntityEvent){ $fizz = new BlazeShootSound($entity); $entity->getLevel()->addSound($fizz); $entity->knockBack($entity, 0, 1, 0, 1); }}
Default is 0.4 It is more practical to use it relatively. PHP: $event->setKnockback($event->getKnockback() * 1.5); Increase knockback by 50%.
OK now I've added onto the plugin, and doing so brought this new problem. Parsing Errors, I need more corrections on my code PHP: <?phpnamespace KB;use pocketmine\plugin\PluginBase;use pocketmine\event\Listener;use pocketmine\level\sound\BlazeShootSound;use pocketmine\event\entity\EntityDamageByEntityEvent;use pocketmine\event\entity\EntityDamageEvent;class KnockBack extends PluginBase implements Listener{ public function onEnable(){ $this->getServer()->getPluginManager()->registerEvents($this, $this); } // Registers the events listed above and used belowpublic function onLoad(){$this->getLogger()->info("KnockBack §aenabled");} // Sends a message to console to Alert you that the plugin has been loaded public function onDamage(EntityDamageEvent $event){ $entity = $event->getEntity(); if($event instanceof EntityDamageByEntityEvent){ $fizz = new BlazeShootSound($entity); $entity->getLevel()->addSound($fizz); $entity->knockBack($entity, 0, 1, 0, 1); } // KnockBack in PVP} public function onDamage(EntityDamageByBlockEvent $event){ $entity = $event->getEntity(); if($event instanceof EntityDamageByEntityEvent){ $entity->knockBack($entity, 0, 1, 0, 1); } // KnockBack from block damage, not explosion friendly because you'll fly away} public function onDisable(){ $this->getLogger()->info("KnockBack §cdisabled."); return true;} // Sends a message to console to Alert you that the plugin has been disabled}
It looks like this one PHP: public function onDamage(EntityDamageByBlockEvent $event){$entity = $event->getEntity();if($event instanceof EntityDamageByEntityEvent){$entity->knockBack($entity, 0, 1, 0, 1);} // KnockBack from block damage, not explosion friendly because you'll fly away}