Bug fixes ! The games start and stuff seems unbugged.

Этот коммит содержится в:
Ad5001 2016-08-20 18:22:44 +03:00
родитель 0aac12eb77
Коммит 8a940dfe58
5 изменённых файлов: 36 добавлений и 21 удалений

Просмотреть файл

@ -1,7 +1,4 @@
worlds:
world:
maxplayers: 8
radius: 1000
uhc:
maxplayers: 8
radius: 1000

Просмотреть файл

@ -40,13 +40,13 @@ class Main extends PluginBase implements Listener{
public function onLevelChange(EntityLevelChangeEvent $event) {
foreach($this->UHCManager->getLevels() as $world) {
if($event->getTarget()->getName() === $world->getName() and !isset($this->games[$world->getName()])) {
if(count($world->getLevel()->getPlayers) > $world->maxplayers) {
if(count($world->getLevel()->getPlayers()) > $world->maxplayers) {
$event->setCancelled();
}
} elseif($event->getLevel()->getName() === $world->getName() and isset($this->games[$world->getName()]) and !isset($this->quit[$event->getPlayer()])) {
} elseif($event->getTarget()->getName() === $world->getName() and isset($this->games[$world->getName()]) and !isset($this->quit[$event->getEntity()])) {
$event->getPlayer()->setGamemode(3);
} elseif($event->getLevel()->getName() === $world->getName() and isset($this->games[$world->getName()]) and isset($this->quit[$event->getPlayer()])) {
$quit = explode("/", $this->quit[$event->getPlayer()]);
} elseif($event->getTarget()->getName() === $world->getName() and isset($this->games[$world->getName()]) and isset($this->quit[$event->getEntity()])) {
$quit = explode("/", $this->quit[$event->getEntity()]);
if($quit[3] === $world->getName()) {
$event->getPlayer()->teleport(new Vector3($quit[0], $quit[1], $quit[2]));
foreach($world->getLevel()->getPlayers() as $player) {
@ -210,13 +210,13 @@ return false;
public function onEntityLevelChange(EntityLevelChangeEvent $event) {
if(isset($this->UHCManager->getLevels()[$event->getOrigin()->getName()]) and $event->getEntity() instanceof Player) {
foreach($this->UHCManager->getLevels()[$event->getPlayer()->getLevel()->getName()]->scenarioManager->getScenarios() as $sc) {
foreach($this->UHCManager->getLevels()[$event->getOrigin()->getName()]->scenarioManager->getScenarios() as $sc) {
$sc->onQuit($event->getPlayer());
}
}
if(isset($this->UHCManager->getLevels()[$event->getTarget()->getName()]) and $event->getEntity() instanceof Player) {
foreach($this->UHCManager->getLevels()[$event->getPlayer()->getLevel()->getName()]->scenarioManager->getScenarios() as $sc) {
$sc->onJoin($event->getPlayer());
foreach($this->UHCManager->getLevels()[$event->getTarget()->getName()]->scenarioManager->getScenarios() as $sc) {
$sc->onJoin($event->getEntity());
}
}
}
@ -313,7 +313,7 @@ return false;
public function onEntityDamage(\pocketmine\event\entity\EntityDamageEvent $event) {
if(isset($this->UHCManager->getLevels()[$event->getEntity()->getLevel()->getName()])) {
foreach($this->UHCManager->getLevels()[$event->getPlayer()->getLevel()->getName()]->scenarioManager->getScenarios() as $sc) {
foreach($this->UHCManager->getLevels()[$event->getEntity()->getLevel()->getName()]->scenarioManager->getScenarios() as $sc) {
$sc->onEntityDamage($event);
}
}
@ -321,7 +321,8 @@ return false;
public function onProjectileLaunch(\pocketmine\event\entity\ProjectileLaunchEvent $event) {
if(isset($this->UHCManager->getLevels()[$event->getEntity()->getLevel()->getName()])) {foreach($this->UHCManager->getLevels()[$event->getPlayer()->getLevel()->getName()]->scenarioManager->getScenarios() as $sc) {
if(isset($this->UHCManager->getLevels()[$event->getEntity()->getLevel()->getName()])) {
foreach($this->UHCManager->getLevels()[$event->getEntity()->getLevel()->getName()]->scenarioManager->getScenarios() as $sc) {
$sc->onProjectileLaunch($event);
}
}
@ -330,7 +331,7 @@ return false;
public function onProjectileHit(\pocketmine\event\entity\ProjectileHitEvent $event) {
if(isset($this->UHCManager->getLevels()[$event->getEntity()->getLevel()->getName()])) {
foreach($this->UHCManager->getLevels()[$event->getPlayer()->getLevel()->getName()]->scenarioManager->getScenarios() as $sc) {
foreach($this->UHCManager->getLevels()[$event->getEntity()->getLevel()->getName()]->scenarioManager->getScenarios() as $sc) {
$sc->onProjectileHit($event);
}
}
@ -390,4 +391,10 @@ return false;
}
}
}
public function onGameStart(\Ad5001\UHC\event\GameStartEvent $event) {}
public function onGameStop(\Ad5001\UHC\event\GameStopEvent $event) {}
}

Просмотреть файл

@ -56,7 +56,7 @@ class UHCGame implements Listener{
$effect->setAmplifier(99);
$effect->setVisible(false);
$player->addEffect($effect);
$this->m->getServer()->getScheduler()->scheduleDelayedTask(new StopResTask($this, $this->world), 30*20);
$this->m->getServer()->getScheduler()->scheduleDelayedTask(new StopResTask($this->m, $this->world->getPlayers()), 30*20);
$player->sendMessage(Main::PREFIX . C::GREEN . "Game started ! Good luck {$player->getName()} !");
}
}
@ -64,10 +64,16 @@ class UHCGame implements Listener{
public function onHeal(EntityRegainHealthEvent $event) {
if($event->getEntity() instanceof Player and $event->getRegainReason() === EntityRegainHealthEvent::CAUSE_SATURATION and $event->getEntity()->getLevel()->getName() === $world->getLevel()->getName()) { // if player is playing
if($event->getEntity() instanceof Player and $event->getRegainReason() === EntityRegainHealthEvent::CAUSE_SATURATION and $event->getEntity()->getLevel()->getName() === $this->world->getLevel()->getName()) { // if player is playing
$event->setCancelled();
}
}
public function onGameStart(\Ad5001\UHC\event\GameStartEvent $event) {}
public function onGameStop(\Ad5001\UHC\event\GameStopEvent $event) {}
public function onRespawn(PlayerRespawnEvent $event) {

Просмотреть файл

@ -13,6 +13,9 @@ use pocketmine\Player;
use pocketmine\level\Level;
use Ad5001\UHC\task\StartGameTask;
class UHCManager {
@ -36,10 +39,12 @@ class UHCManager {
public function startUHC(Level $level) {
if(isset($this->levels[$level->getName()]) and !isset($this->startedgames[$level->getName()])) {
$ft = $this->main->getServer()->getScheduler()->scheduleRepeatingTask($t = new StartGameTask($this, $this->levels[$level->getName()]), 20);
$ft = $this->main->getServer()->getScheduler()->scheduleRepeatingTask($t = new StartGameTask($this->main, $this->levels[$level->getName()]), 20);
$t->setHandler($ft);
$this->startedgames[$level->getName()] = true;
$this->levels[$level->getName()]->onUHCStart();
foreach($this->levels[$level->getName()]->scenarioManager->getScenarios() as $sc) {
$sc->onStart();
}
return true;
}
return false;
@ -50,7 +55,9 @@ class UHCManager {
public function stopUHC(Level $level) {
if(isset($this->startedgames[$level->getName()])) {
unset($this->startedgames[$level->getName()]);
$this->levels[$level->getName()]->onUHCStop();
foreach($this->levels[$level->getName()]->scenarioManager->getScenarios() as $sc) {
$sc->onQuit();
}
return true;
}
return false;
@ -61,8 +68,6 @@ class UHCManager {
public function registerLevel(Level $level) {
if(!array_key_exists($level->getName(), $this->levels)) {
$this->levels[$level->getName()] = new UHCWorld($this->main,$level,$this->main->getConfig()->get("worlds")[$level->getName()]["maxplayers"],$this->main->getConfig()->get("worlds")[$level->getName()]["radius"]);
} else {
$this->main->getLogger()->warning("{$level->getName()} is already registered.");
}
}

Просмотреть файл

@ -22,7 +22,7 @@ use Ad5001\UHC\Main;
class StopResTask extends PluginTask {
public function __construct(Plugin $plugin, array $players) {
parent::__construct($this);
parent::__construct($plugin);
$this->m = $plugin;
$this->players = $players;
}