i use setRespawnPosition() and when player respawn 1) server respawn him to specified coordinates but other chunks then the first don´t load 2) server respawn player somewhere in air and player can´t move or chat.
I know this is not originaly my code. PHP: public function onPlayerRespawn(PlayerRespawnEvent $event) { $player = $event->getPlayer(); if ($event->getPlayer () instanceof Player) { if($this->getPlugIn()->ingame == true){ if ($this->getManager () == null) { $this->log ( " getManager is null!" ); } if($this->getPlugIn()->redBed == 0) { $redTeamSpawnPos = $this->getSetup ()->getGamePos ( CTFSetup::CTF_GAME_ARENA_POSITION_ENTRY_RED_TEAM ); if(isset($this->getPlugIn()->redTeamPlayers[$player->getName()])){ $event->setRespawnPosition ( $redTeamSpawnPos ); } } if($this->getPlugIn()->blueBed == 0) { $blueTeamSpawnPos = $this->getSetup ()->getGamePos ( CTFSetup::CTF_GAME_ARENA_POSITION_ENTRY_BLUE_TEAM ); if(isset($this->getPlugIn()->blueTeamPlayers[$player->getName()])){ $event->setRespawnPosition ( $blueTeamSpawnPos ); } } if($this->getPlugIn()->yellowBed == 0) { $yellowTeamSpawnPos = $this->getSetup ()->getGamePos ( CTFSetup::CTF_GAME_ARENA_POSITION_ENTRY_YELLOW_TEAM ); if(isset($this->getPlugIn()->yellowTeamPlayers[$player->getName()])){ $event->setRespawnPosition ( $yellowTeamSpawnPos ); } } if($this->getPlugIn()->greenBed == 0) { $greenTeamSpawnPos = $this->getSetup ()->getGamePos ( CTFSetup::CTF_GAME_ARENA_POSITION_ENTRY_GREEN_TEAM ); if(isset($this->getPlugIn()->greenTeamPlayers[$player->getName()])){ $event->setRespawnPosition ( $greenTeamSpawnPos ); } } }}}
i have finish to 90% a bedwars plugin... how do u will go on with the invisible bug if player change nametag? or dont u change it? (with chunk loading i dont have problems, wich pocketmine version u use? or yml settings?)
im finishing bedwars right now and i haven´t fixed invisible bug :/ but server teleport players from lobby so they are visible and i fix it using something like /vanish in EssentialsPE and so how did you do respawning players?
i have make a little network so 3 rounds at same time on one server. lobby is a other one... i setname tag all the time at the moment so the players are flashing xD why do u have so much dropped items? a idear is clearlagg... only let the code use the command after round
i do it like this: Code: if(!(isset($this->team[$name]))) { $this->team[$name] = 0; } if($this->team[$name] == 1) { if($this->bett['blau'] == 1) { $posblau = $this->bedwarswelt->get("TeamBlauStartBW"); $posb = explode(",", $posblau); $event->setRespawnPosition(new Position($posb[0], $posb[1], $posb[2])); } } u can see the end product on survivalhive.de port 19133 0.11.0 build 10 (left portal)
and yes i added clear all items after game but if game is running and players don´t take bronze so server is so laggy XD
ahh xD i do it on an other way - i dont drop the brnze - i give it to the players direcly its my own bedwars ^^ so not all is like pc version - i play it never befor xD with signs they can change the bronze into silver - the signs stands on other islands - finished xD
and what about disable PVP? my code: PHP: public function onHurt(EntityDamageEvent $event){ $blueTeamSpawnPos = $this->getSetup ()->getGamePos ( BWSetup::BW_GAME_ARENA_POSITION_ENTRY_BLUE_TEAM ); $redTeamSpawnPos = $this->getSetup ()->getGamePos ( BWSetup::BW_GAME_ARENA_POSITION_ENTRY_RED_TEAM ); $yellowTeamSpawnPos = $this->getSetup ()->getGamePos ( BWSetup::BW_GAME_ARENA_POSITION_ENTRY_YELLOW_TEAM ); $greenTeamSpawnPos = $this->getSetup ()->getGamePos ( BWSetup::BW_GAME_ARENA_POSITION_ENTRY_GREEN_TEAM ); if($event instanceof EntityDamageByEntityEvent) { $attacker = $event->getDamager(); $victim = $event->getEntity(); if ($event->getEntity() instanceof Player && $event->getDamager() instanceof Player) { if($this->getPlugIn()->ingame == false){ $event->setCancelled(true); } if ( isset($this->getPlugin()->redTeamPlayers[$event->getEntity()->getName()]) && isset($this->getPlugin()->redTeamPlayers[$event->getDamager()->getName()])) { $event->setCancelled(true); } elseif( isset($this->getPlugin()->blueTeamPlayers[$event->getEntity()->getName()]) && isset($this->getPlugin()->blueTeamPlayers[$event->getDamager()->getName()])) { $event->setCancelled(true); } elseif( isset($this->getPlugin()->yellowTeamPlayers[$event->getEntity()->getName()]) && isset($this->getPlugin()->yellowTeamPlayers[$event->getDamager()->getName()])) { $event->setCancelled(true); } elseif( isset($this->getPlugin()->greenTeamPlayers[$event->getEntity()->getName()]) && isset($this->getPlugin()->greenTeamPlayers[$event->getDamager()->getName()])) { $event->setCancelled(true); } elseif(isset($this->getPlugin()->lobbyPlayers[$event->getDamager()->getName()])) { $event->setCancelled(true); }}}} this code doesn´t work . players still can hit each other from their team :/
uff xD wtf sry xD thats all by me xD Code: if($event instanceof EntityDamageByEntityEvent) { if($event->getEntity() instanceof Player && $event->getDamager() instanceof Player) { if($this->team[strtolower($event->getDamager()->getName())] == $this->team[strtolower($event->getEntity()->getName())]) { $event->setCancelled(true); $event->getDamager()->sendMessage(MT::GOLD ."Ihr seid im selben Team!"); } } }