Browse Source

Bug fixes ! The games start and stuff seems unbugged.

pull/6/head
Ad5001 4 years ago
parent
commit
8a940dfe58
5 changed files with 36 additions and 21 deletions
  1. +0
    -3
      config.yml
  2. +17
    -10
      src/Ad5001/UHC/Main.php
  3. +8
    -2
      src/Ad5001/UHC/UHCGame.php
  4. +10
    -5
      src/Ad5001/UHC/UHCManager.php
  5. +1
    -1
      src/Ad5001/UHC/task/StopResTask.php

+ 0
- 3
config.yml View File

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

+ 17
- 10
src/Ad5001/UHC/Main.php View File

@@ -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) {}
}

+ 8
- 2
src/Ad5001/UHC/UHCGame.php View File

@@ -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) {


+ 10
- 5
src/Ad5001/UHC/UHCManager.php View File

@@ -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.");
}
}



+ 1
- 1
src/Ad5001/UHC/task/StopResTask.php View File

@@ -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;
}


Loading…
Cancel
Save