diff --git a/src/VectorNetworkProject/TheMix/event/player/ThePlayerInteractEvent.php b/src/VectorNetworkProject/TheMix/event/player/ThePlayerInteractEvent.php index 6d97ce4..246d1d6 100644 --- a/src/VectorNetworkProject/TheMix/event/player/ThePlayerInteractEvent.php +++ b/src/VectorNetworkProject/TheMix/event/player/ThePlayerInteractEvent.php @@ -10,6 +10,7 @@ use pocketmine\event\Listener; use pocketmine\event\player\PlayerInteractEvent; +use pocketmine\Player; use VectorNetworkProject\TheMix\game\corepvp\TeamManager; use VectorNetworkProject\TheMix\game\DefaultConfig; @@ -27,6 +28,7 @@ public function event(PlayerInteractEvent $event) return; } TeamManager::JoinTeam($player); + $player->setGamemode(Player::SURVIVAL); } } } diff --git a/src/VectorNetworkProject/TheMix/game/GameManager.php b/src/VectorNetworkProject/TheMix/game/GameManager.php new file mode 100644 index 0000000..a9d124e --- /dev/null +++ b/src/VectorNetworkProject/TheMix/game/GameManager.php @@ -0,0 +1,43 @@ +getOnlinePlayers() as $player) { + $player->teleport(Server::getInstance()->getDefaultLevel()->getSpawnLocation()); + $player->setGamemode(Player::ADVENTURE); + $player->setNameTag($player->getName()); + $player->setDisplayName($player->getName()); + $player->setFood(20); + $player->setHealth(20); + $player->setMaxHealth(20); + $player->getInventory()->clearAll(); + $player->getArmorInventory()->clearAll(); + $player->removeAllEffects(); + $player->addEffect(new EffectInstance(Effect::getEffect(Effect::NIGHT_VISION), 99999999 * 20, 11, false)); + } + TheMix::getInstance()->getServer()->unloadLevel(TheMix::getInstance()->getServer()->getLevelByName(DefaultConfig::getStageLevelName())); + TheMix::getInstance()->getServer()->loadLevel(DefaultConfig::getStageLevelName()); + } +} diff --git a/src/VectorNetworkProject/TheMix/game/corepvp/CoreManager.php b/src/VectorNetworkProject/TheMix/game/corepvp/CoreManager.php index 5106bb9..4222ef7 100644 --- a/src/VectorNetworkProject/TheMix/game/corepvp/CoreManager.php +++ b/src/VectorNetworkProject/TheMix/game/corepvp/CoreManager.php @@ -10,9 +10,19 @@ use pocketmine\block\Block; use pocketmine\Player; +use VectorNetworkProject\TheMix\game\corepvp\blue\BlueCoreManager; +use VectorNetworkProject\TheMix\game\corepvp\red\RedCoreManager; abstract class CoreManager { + const MAX_HP = 100; + + public static function resetHP(): void + { + RedCoreManager::setHP(self::MAX_HP); + BlueCoreManager::setHP(self::MAX_HP); + } + /** * @param int $hp */ diff --git a/src/VectorNetworkProject/TheMix/game/corepvp/TeamManager.php b/src/VectorNetworkProject/TheMix/game/corepvp/TeamManager.php index be08d8c..23472c2 100644 --- a/src/VectorNetworkProject/TheMix/game/corepvp/TeamManager.php +++ b/src/VectorNetworkProject/TheMix/game/corepvp/TeamManager.php @@ -43,6 +43,12 @@ public static function JoinTeam(Player $player) } } + public static function resetTeam(): void + { + RedTeamManager::ClearList(); + BlueTeamManager::ClearList(); + } + /** * @param Player $player */ diff --git a/src/VectorNetworkProject/TheMix/game/corepvp/blue/BlueCoreManager.php b/src/VectorNetworkProject/TheMix/game/corepvp/blue/BlueCoreManager.php index 9cab11c..f1a7f0b 100644 --- a/src/VectorNetworkProject/TheMix/game/corepvp/blue/BlueCoreManager.php +++ b/src/VectorNetworkProject/TheMix/game/corepvp/blue/BlueCoreManager.php @@ -17,7 +17,7 @@ class BlueCoreManager extends CoreManager { /** @var int $hp */ - private static $hp = 75; + private static $hp = self::MAX_HP; /** * @param int $hp diff --git a/src/VectorNetworkProject/TheMix/game/corepvp/red/RedCoreManager.php b/src/VectorNetworkProject/TheMix/game/corepvp/red/RedCoreManager.php index 6d57d93..9989e2e 100644 --- a/src/VectorNetworkProject/TheMix/game/corepvp/red/RedCoreManager.php +++ b/src/VectorNetworkProject/TheMix/game/corepvp/red/RedCoreManager.php @@ -17,7 +17,7 @@ class RedCoreManager extends CoreManager { /** @var int $hp */ - private static $hp = 75; + private static $hp = self::MAX_HP; /** * @param int $hp diff --git a/src/VectorNetworkProject/TheMix/task/BlockReGeneratorTask.php b/src/VectorNetworkProject/TheMix/task/BlockReGeneratorTask.php index cb084d9..1601625 100644 --- a/src/VectorNetworkProject/TheMix/task/BlockReGeneratorTask.php +++ b/src/VectorNetworkProject/TheMix/task/BlockReGeneratorTask.php @@ -10,6 +10,7 @@ use pocketmine\block\Block; use pocketmine\scheduler\Task; +use VectorNetworkProject\TheMix\TheMix; class BlockReGeneratorTask extends Task { @@ -26,6 +27,11 @@ public function __construct(Block $block) */ public function onRun(int $currentTick) { + if (TheMix::getInstance()->getServer()->getLevelByName($this->getBlock()->getLevel()->getName())->getId() === $this->getBlock()->getLevel()->getId()) { + $this->getHandler()->cancel(); + + return; + } $this->getBlock()->getLevel()->setBlock($this->getBlock()->asVector3(), $this->block); } diff --git a/src/VectorNetworkProject/TheMix/task/ResetGameTask.php b/src/VectorNetworkProject/TheMix/task/ResetGameTask.php index 874dd30..eafd595 100644 --- a/src/VectorNetworkProject/TheMix/task/ResetGameTask.php +++ b/src/VectorNetworkProject/TheMix/task/ResetGameTask.php @@ -9,8 +9,7 @@ namespace VectorNetworkProject\TheMix\task; use pocketmine\scheduler\Task; -use pocketmine\Server; -use VectorNetworkProject\TheMix\game\DefaultConfig; +use VectorNetworkProject\TheMix\game\GameManager; class ResetGameTask extends Task { @@ -19,9 +18,6 @@ class ResetGameTask extends Task */ public function onRun(int $currentTick) { - foreach (Server::getInstance()->getOnlinePlayers() as $player) { - $player->transfer(DefaultConfig::getIp(), DefaultConfig::getPort(), '再接続'); - } - Server::getInstance()->shutdown(); + GameManager::resetGame(); } }