PHP: public function onEntityDamage(EntityDamageEvent $event){ if($event instanceof EntityDamageByEntityEvent){ if($event->getEntity() instanceof Player && $event->getDamager() instanceof Player){ $playern = $event->getEntity()->getNameTag(); $damagern = $event->getDamager()->getNameTag(); $damager = $event->getDamager(); $player = $event->getEntity(); if((strpos($playern, " §c[ RED ] ") !== false) && (strpos($damagern, "§c[ RED ] ") !== false)){ $event->setCancelled(); }else if((strpos($playern, " §9[ BLUE ] ") !== false) && (strpos($damagern, "§9[ BLUE ] ") !== false)){ $event->setCancelled(); }else if((strpos($playern, " §a[ GREEN ] ") !== false) && (strpos($damagern, "§a[ GREEN ] ") !== false)){ $event->setCancelled(); }else if((strpos($playern, " §e[ YELLOW ] ") !== false) && (strpos($damagern, "§e[ YELLOW ] ") !== false)){ $event->setCancelled(); } } }}} This fails to work right, it was working before but now it just stopped. What have I done wrong?? Do you need the entire code? Also there were no console errors!
strpos() !== false is different from strpos(). strpos() can return 0, which will be casted to false if used as a boolean. You have to use !== false to make sure that it is returning an integer, not returning that the needle doesn't exist in the haystack.
PHP: public function onCommand(CommandSender $player, Command $cmd, $label, array $args){ switch($cmd->getName()){ case "tm": if(!empty($args[0])){ if($args[0]=="red"){ $team = "§4Red "; }else if($args[0]=="blue"){ $team = "§9Blue "; }else if($args[0]=="green"){ $team = "§aGreen "; }else if($args[0]=="yellow"){ $team = "§eYellow "; } $config = new Config($this->getDataFolder() . "/team.yml", Config::YAML); $name = $player->getName(); $player->setNameTag($teamcolor . $name); $config->set($name,$team); $config->save(); $player->getInventory()->setHelmet(Item::get(302, 0, 1)); $player->getInventory()->setChestplate(Item::get(303, 0, 1)); $player->getInventory()->setLeggings(Item::get(304, 0, 1)); $player->getInventory()->setBoots(Item::get(305, 0, 1)); $player->getInventory()->sendArmorContents($player); $player->sendMessage("§l§7§f»§r You entered to the " . $team . " §fteam"); }else{ $player->sendMessage(TextFormat::AQUA ."Teams:"); $player->sendMessage(TextFormat::RED ."Red"); $player->sendMessage(TextFormat::BLUE ."Blue"); $player->sendmessage(TextFormat::GREEN ."Green"); $player->sendMessage(TextFormat::YELLOW ."Yellow"); $player->sendMessage(TextFormat::AQUA .""); } return true; } } public function onDeath(PlayerDeathEvent $event){ $ign = $event->getPlayer()->getName(); $player = $event->getPlayer(); $file = ($this->getDataFolder()."Players/".$ign.".yml"); if(!file_exists($file)){ $this->PlayerFile = new Config($this->getDataFolder()."Players/".$ign.".yml", Config::YAML); $this->PlayerFile->set("Money",0); $this->PlayerFile->set("EXP",0); $this->PlayerFile->save(); $fizz = new AnvilFallSound($player); $player->getLevel()->addSound($fizz); } }public function onEntityDamage(EntityDamageEvent $event){ if($event instanceof EntityDamageByChildEntityEvent){ $entity = $event->getDamager(); if($entity instanceof Player){ $ses = $this->main->getSessions()->getSession($entity); if($ses instanceof Session and $ses->inSession($this)){ $data = $this->getPlayerData($ses); if($data->isPlaying() and $data->getArena()->isPlaying()){ $projectile = $event->getChild(); if($projectile instanceof Snowball){ $event->setCancelled(false); $event->setKnockBack($event->getKnockBack() * 2); if($event instanceof EntityDamageByEntityEvent){ if($event->getEntity() instanceof Player && $event->getDamager() instanceof Player){ $playern = $event->getEntity()->getNameTag(); $damagern = $event->getDamager()->getNameTag(); $damager = $event->getDamager(); $player = $event->getEntity(); if((strpos($playern, "§4Red §l§f»§r ") !== false) && (strpos($damagern, "§4Red §l§f»§r ") !== false)){ $event->setCancelled(); }else if((strpos($playern, "§9Blue §l§f»§r ") !== false) && (strpos($damagern, "§9Blue §l§f»§r ") !== false)){ $event->setCancelled(); }else if((strpos($playern, "§aGreen §l§f»§r ") !== false) && (strpos($damagern, "§aGreen §l§f»§r ") !== false)){ $event->setCancelled(); }else if((strpos($playern, "§eYellow §l§f»§r ") !== false) && (strpos($damagern, "§eYellow §l§f»§r ") !== false)){ $event->setCancelled(); } } } } } } } }}} I've added more to EntityDamage and the nametag formats are at the top
Try without spaces like PHP: if((strpos($playern, "§c[ RED ]") !== false) && (strpos($damagern, "§c[ RED ]") !== false)){
"!== false" is useless. If a value returns true, the function if will run the code. PHP: $boolean = true;// useif($boolean);// and if($boolean !== false);// are the same!
What if the variable is not a boolean? PHP: switch($condition){ case 1: $i = false; break; case 2: $i = 0; break; default: $i = 1; break;}if($i){ echo '$i is a nonzero int';}if($i !== false){ echo '$i is an int';} And this situation is true for strpos(). For details, read my post above. strpos() can return 0.