Compare commits

...

6 commits
1.0 ... master

Author SHA1 Message Date
Ad5001 8dac7143e2 Merge pull request #2 from remotevase/patch-1
Grammar Fixes in README.md
2016-10-11 18:13:00 +02:00
remote_vase 0fa193860f Update README.md 2016-10-10 20:57:39 -04:00
Ad5001 93003a2da6 some fixes.... 2016-08-18 08:39:28 +03:00
Ad5001 343275eb74 TNTRun ? 2016-08-17 13:35:42 +03:00
Ad5001 959d7149db potions on the Werewolfs 2016-08-11 11:00:32 +03:00
Ad5001 12fac16eda LOUP GAROU 2016-08-10 13:55:41 +03:00
10 changed files with 882 additions and 38 deletions

View file

@ -1,9 +1,9 @@
BoxOfDevs General Software License 1.1
BoxOfDevs General Software License 1.1.1
=========================================
This license is designed to be used with any free open source softwares. It can be found @ https://products.boxofdevs.com/.
--------------------------------------------------------------------------------------------------------------------------------------
The License: refers to the BoxOfDevs International Software License 1.0.
The License: refers to the BoxOfDevs International Software License 1.1.1
The Software: refers to any works licensed under The License.
The Modification: refers to any modified version of The Software.
The Redistribution: refers to any redistributions of The Software/The Modification.
@ -27,6 +27,7 @@ b. Sell any part of The Software/The Modification for profit.
2. The User Cannot:
a. Hold The Author responsible for any unknown errors.
b. Claim The Software/The Modification/The Redistribution as entirely The User's product.
c. Use the software without crediting the Author.
3. The Author Cannot:
a. Restrict The User in any way not specified by The License.
b. Distribute any form of The Software without proper documentation.

View file

@ -1,7 +1,7 @@
# GameManager
Make minigames easilier !
Gamemanager is a plugin that allow minigame writing a lot easilier with his easy api, disigned for per world minigame !
I made this for me at start but feel free to use it to write your own minigame !
Make minigames easier!
Gamemanager is a plugin that makes writing a minigame much easier with its easy api, which is conveniently designed for per world minigames!
I made this for me in the beginning but feel free to use it to write your own minigame!
### How to make a game:
To make a game base, create a new file called "<**YOUR_GAME_NAME**>.php". Inside it, add a

View file

@ -19,4 +19,6 @@ InGame4: "> > > CLICK TO SPECTATE < < <"
# Example:
redstone: Example
spleef: Spleef
world: LoupGarou
tntrun: TNTRun
...

View file

@ -1,4 +1,11 @@
<?php
/*
This software is distributed under the BoxOfDevs Public General License 1.1
Some names could come from the Werewolfs of Thiercelieux by (c) Lui-même Co Ltd 2016
@author Ad5001
@link projects.ad5001.ga/GameManager
@version 1.0
*/
use Ad5001\GameManager\Game;
use pocketmine\Player;
use pocketmine\item\Item;
@ -32,15 +39,16 @@ class LoupGarou extends Game {
}
$this->amoureux = [];
$this->voted = [];
$this->hasvoted = [];
$this->current = null;
$this->killed = null;
$this->potions = ["life" => true, "death" => true];
$this->getServer()->getScheduler()->scheduleRepeatingTask();
$this->maire = null;
$this->potions = ["life" => true, "death" => true, "speed" => true, "slow" => true, "regen" => true, "poison" => true];
$this->getServer()->getScheduler()->scheduleRepeatingTask(new FirstDayTask($this), 20);
}
public function onGameStop() {
$this->getLogger()->info("Game stoped");
foreach($this->getLevel()->getPlayers() as $p) {
$p->setGamemode(0);
$p->teleport($this->getServer()->getDefaultLevel()->getSafeSpawn());
@ -51,7 +59,7 @@ class LoupGarou extends Game {
public function onJoin(Player $player) {
if($this->main->getInGamePlayers($this->getLevel()) + 1 >= $this->getMinPlayers() and !$this->isStarted()) {
$this->getLogger()->info("Started !");
$h = $this->getServer()->getScheduler()->scheduleRepeatingTask($t = new StartTask($this), 20);
$h = $this->getServer()->getScheduler()->scheduleRepeatingTask($t = new StartLGTask($this), 20);
$t->setHandler($h);
if(isset($this->task)) {
$this->getServer()->getScheduler()->cancelTask($this->task->getTaskId());
@ -77,21 +85,50 @@ class LoupGarou extends Game {
if($player->isSurvival() or $player->isAdventure()) {
if($this->isStarted()) {
foreach($this->getLevel()->getPlayers() as $p) {
$p ->sendMessage(\pocketmine\utils\TextFormat::YELLOW . $player->getName() . " a quitté le loup garou. Il reste {$this->getPlugin()->getInGamePlayers($this->getLevel())} joueurs !", [$this->getLevel()->getPlayers()]);
$p ->sendMessage(\pocketmine\utils\TextFormat::YELLOW . $player->getName() . " a quitté le loup garou. Il reste " . $this->getMinPlayers() - $this->getPlugin()->getInGamePlayers($this->getLevel()) . " joueurs !", [$this->getLevel()->getPlayers()]);
}
$player->sendMessage(\pocketmine\utils\TextFormat::YELLOW . "Vous avez quitté le loup garou. Il reste " . ($this->getMinPlayers() - $this->getPlugin()->getInGamePlayers($this->getLevel())) ." joueurs !");
} else {
foreach($this->getLevel()->getPlayers() as $p) {
$p ->sendMessage(\pocketmine\utils\TextFormat::YELLOW . $player->getName() . " a quitté le loup garou. Il reste {$this->getPlugin()->getInGamePlayers($this->getLevel())} joueurs avant de demarer la partie !", [$this->getLevel()->getPlayers()]);
$p ->sendMessage(\pocketmine\utils\TextFormat::YELLOW . $player->getName() . " a quitté le loup garou. Il reste " . $this->getMinPlayers() - $this->getPlugin()->getInGamePlayers($this->getLevel()) . "joueurs avant de demarer la partie !", [$this->getLevel()->getPlayers()]);
}
$player->sendMessage(\pocketmine\utils\TextFormat::YELLOW . "Vous avez quitté le loup garou. Il reste " . ($this->getMinPlayers() - $this->getPlugin()->getInGamePlayers($this->getLevel())) ." joueurs avant de demarer la partie !");
$player->sendMessage(\pocketmine\utils\TextFormat::YELLOW . "Vous avez quitté le loup garou. Il reste " . ($this->getMinPlayers() - $this->getPlugin()->getInGamePlayers($this->getLevel())) ." joueurs avant de demarer la partie !");
}
}
}
public function onPlayerDeath(\pocketmine\event\player\PlayerDeathEvent $event) {
$event->setDeathMessage("");
$this->broadcastMessage($event->getPlayer()->getName() . " est mort ! C'était un " . $this->getRole($player));
$this->eliminate($event->getPlayer());
}
public function finish(bool $b) {
if($b) {
$l = $this->LoupGarou[count($this->LoupGarou) - 1];
unset($this->LoupGarou[count($this->LoupGarou) - 1]);
$n = [];
foreach($this->LoupGarou as $lg) {
$n[] = $lg->getName();
}
foreach($this->getLevel()->getPlayers() as $p) {
$p->sendTip("§l" . (count($this->LoupGarou) == 0 ? implode(", ", $n) . " et " . $l->getName() : $l->getName()) . " (Loups Garous) ont gagnés la partie car tout les villageois sont mort ! \n\n\n§rRetour au lobby dans 30 secondes...");
}
} else {
$v = $this->main->getInGamePlayers($this->getLevel());
$l = $v[count($v) - 1];
unset($v[count($v) - 1]);
$n = [];
foreach($v as $lg) {
$n[] = $v->getName();
}
foreach($this->getLevel()->getPlayers() as $p) {
$p->sendTip("§l" . (count($v) == 0 ? implode(", ", $n) . " et " . $l->getName() : $l->getName()) . " (Villageois) ont gagnés la partie car tout les loups garous sont mort ! \n\n\n§rRetour au lobby dans 30 secondes...");
}
}
$this->getServer()->getScheduler()->scheduleDelayedTask(new FinishLGTask($this), 600);
}
@ -164,14 +201,87 @@ class LoupGarou extends Game {
case "sorcière":
if($event->getDamager() instanceof Player) {
if($this->getRole($event->getDamager()) == "Sorcière" and $this->getRole($event->getEntity()) !== "Sorcière") {
if($event->getDamager()->getInventory()->getItemInHand()->getId() == 373 and $event->getDamager()->getInventory()->getItemInHand()->getDamage() == 23) {
$this->killed2 = $event->getEntity();
$this->task->turn = 390;
if($event->getDamager()->getInventory()->getItemInHand()->getId() == 373) {
if($event->getDamager()->getInventory()->getItemInHand()->getDamage() == 23) {
$this->killed2 = $event->getEntity();
$this->potions["death"] = false;
$this->task->turn = 390;
} elseif($event->getDamager()->getInventory()->getItemInHand()->getDamage() == 14) {
$this->speed = $event->getEntity();
$this->potions["speed"] = false;
$this->task->turn = 390;
} elseif($event->getDamager()->getInventory()->getItemInHand()->getDamage() == 17) {
$this->slow = $event->getEntity();
$this->potions["slowness"] = false;
$this->task->turn = 390;
} elseif($event->getDamager()->getInventory()->getItemInHand()->getDamage() == 28) {
$this->regen = $event->getEntity();
$this->potions["regen"] = false;
$this->task->turn = 390;
} elseif($event->getDamager()->getInventory()->getItemInHand()->getDamage() == 25) {
$this->poison = $event->getEntity();
$this->potions["poison"] = false;
$this->task->turn = 390;
}
}
}
}
$event->setCancelled();
break;
case "meurtrier":
if($event->getDamager() instanceof Player) {
if($this->getRole($event->getDamager()) == "Meurtrier") {
$this->broadcastMessage($event->getEntity()->getName() . " a été éliminé et c'etait un " . $this->getRole($event->getEntity()));
$this->eliminate($event->getEntity());
}
}
break;
case "maire":
if(!in_array($event->getDamager(), $this->hasvoted)) {
$this->hasvoted[] = $event->getDamager();
if(isset($this->voted[$event->getEntity()->getName()])) {
$this->voted[$event->getEntity()->getName()]++;
} else {
$this->voted[$event->getEntity()->getName()] = 1;
}
if(count($this->hasvoted) == count($this->getLevel()->getPlayers())) {
$this->task->turn = 525;
}
}
break;
case "vote":
$this->hasvoted = [];
$this->voted = [];
if(!in_array($event->getDamager(), $this->hasvoted)) {
$this->hasvoted[] = $event->getDamager();
$votec = 1;
if($event->getDamager() == $this->maire) {
$votec = 1.5;
}
if(isset($this->voted[$event->getEntity()->getName()])) {
$this->voted[$event->getEntity()->getName()] += $votec;
} else {
$this->voted[$event->getEntity()->getName()] = $votec;
}
if(count($this->hasvoted) == count($this->getLevel()->getPlayers())) {
$this->task->turn = 590;
}
}
$event->setCancelled();
break;
case "kill":
if($this->mort !== $event->getDamager() or $this->mort !== $event->getEntity()) {
$event->setCancelled();
}
break;
case "successeur":
if($event->getDamager() == $this->maire) {
$this->maire = $event->getEntity();
$this->broadcastMessage("Le nouveau maire est " . $event->getEntity()->getName() . " !");
$this->eliminate($event->getDamager());
$this->task->turn = 465;
}
break;
default:
$event->setCancelled();
break;
@ -182,6 +292,25 @@ class LoupGarou extends Game {
public function eliminate(Player $player) {
if($this->current == "kill") {
$this->task->turn = 650;
}
if($player == $this->amoureux[0] and !isset($this->killedAm)) {
$this->broadcastMessage("Mais " . $this->amoureux[1]->getName() . " était amoureux de " . $this->amoureux[0]->getName() . " et se suicida par chagrin d'amour...");
$this->killedAm = true;
$this->eliminate($this->amoureux[1]);
}
if($player == $this->amoureux[1] and !isset($this->killedAm)) {
$this->broadcastMessage("Mais " . $this->amoureux[0]->getName() . " était amoureux de " . $this->amoureux[1]->getName() . " et se suicida par chagrin d'amour...");
$this->killedAm = true;
$this->eliminate($this->amoureux[0]);
}
if($this->maire == $player) {
$this->oldMaire = $player;
$this->current = "successeur";
$this-broadcastMessage("Le maire est mort ! Il va désigner son successeur !");
return true;
}
$player->setGamemode(3);
switch($this->getRole($player)) {
case "LoupGarou":
@ -203,6 +332,21 @@ class LoupGarou extends Game {
unset($this->{$this->getRole($player)});
break;
}
$lg = [];
$v = [];
foreach($this->getLevel()->getPlayers() as $p) {
if($this->getRole($player) == "LoupGarou") {
array_push($lg, $player);
} else {
array_push($v, $player);
}
}
if(count($v) == 0) { // Les loups garous ont gagnés
$this->finish(true);
}
if(count($lg) == 0) { // Les villageois ont gagné
$this->finish(false);
}
}
@ -243,11 +387,12 @@ class LoupGarou extends Game {
public function onInteract(\pocketmine\event\player\PlayerInteractEvent $event) {
if($event->getPlayer()->getInventory()->getItemInHand()->getId() == 373) {
if($event->getPlayer()->getInventory()->getItemInHand()->getDamage() == 21) {
$this->killed = null;
$this->task->turn = 390;
foreach($this->getLevel()->getPlayers() as $p) {
$p->showPlayer($this->killed);
}
$this->killed = null;
$this->potions["life"] = false;
}
$event->setCancelled();
}
@ -271,7 +416,23 @@ class LoupGarou extends Game {
}
class StartTask extends \pocketmine\scheduler\PluginTask {
class FinishLGTask extends \pocketmine\scheduler\PluginTask {
public function __construct(LoupGarou $main) {
parent::__construct($main->getPlugin());
$this->main = $main;
}
public function onRun($tick) {
$this->main->stop();
}
}
class StartLGTask extends \pocketmine\scheduler\PluginTask {
public function __construct(LoupGarou $main) {
parent::__construct($main->getPlugin());
@ -308,7 +469,7 @@ class StartTask extends \pocketmine\scheduler\PluginTask {
}
}
class DayTask extends \pocketmine\scheduler\PluginTask {
class FirstDayTask extends \pocketmine\scheduler\PluginTask {
public function __construct(LoupGarou $main) {
parent::__construct($main->getPlugin());
@ -420,7 +581,7 @@ class DayTask extends \pocketmine\scheduler\PluginTask {
case 330:
$this->main->broadcastMessage("La sorcière se réveille !");
$this->main->Sorcière->removeEffectByName("BLINDNESS");
$this->main->Sorcière->sendMessage($this->killed->getName() . " a été tué cette nuit ! Souaitez vous le resuciter (boire la potion de vie), ou tuer une autre personne (la taper avec la potion de mort). Faites attention, ces potions n'ont qu'un seul usage dans la partie.");
$this->main->Sorcière->sendMessage($this->main->killed->getName() . " a été tué cette nuit ! Souaitez vous le resuciter (boire la potion de vie), ou tuer une autre personne (la taper avec la potion de mort). Faites attention, ces potions n'ont qu'un seul usage dans la partie.");
if($this->potions["life"]) {
$this->main->Sorcière->getInventory()->addItem(Item::get(Item::POTION, 21, 1)->setCompoundTag(\pocketmine\nbt\NBT::parseJSON("{display:{Name:'Potion de vie\\n \\n \\n \\n'},Unbreakable:1}")));
}
@ -446,16 +607,16 @@ class DayTask extends \pocketmine\scheduler\PluginTask {
break;
case 400:
$this->main->getLevel()->setTime(0);
if(isset($this->killed) and isset($this->killed2)) {
$this->main->broadcastMessage("Cette nuit, 2 personnes sont morte. Le " . $this->getRole($this->killed) . " et le " . $this->getRole($this->killed2) . " !");
switch($this->getRole($this->killed)) {
if(isset($this->main->killed) and isset($this->main->killed2)) {
$this->main->broadcastMessage("Cette nuit, 2 personnes sont morte. Le " . $this->getRole($this->main->killed) . " et le " . $this->getRole($this->main->killed2) . " !");
switch($this->getRole($this->main->killed)) {
case "Meutrier":
$this->main->broadcastMessage("Mais le meutrier, dans sa chute, a tué une autre personne.");
$this->main->Meurtier->sendMessage("Choisissez une persone à tuer en la tapant.");
$m = true;
break;
}
switch($this->getRole($this->killed2)) {
switch($this->getRole($this->main->killed2)) {
case "Meutrier":
$this->main->broadcastMessage("Mais le meutrier, dans sa chute, a tué une autre personne.");
$this->main->Meurtier->sendMessage("Choisissez une persone à tuer en la tapant.");
@ -463,9 +624,9 @@ class DayTask extends \pocketmine\scheduler\PluginTask {
break;
if(!isset($m)) $this->turn = 465; else $this->main->current = "meutrier";
}
} elseif(isset($this->killed)) {
$this->main->broadcastMessage("Cette nuit, 1 personne est morte. Le " . $this->getRole($this->killed) . " !");
switch($this->getRole($this->killed)) {
} elseif(isset($this->main->killed)) {
$this->main->broadcastMessage("Cette nuit, 1 personne est morte. Le " . $this->getRole($this->main->killed) . " !");
switch($this->getRole($this->main->killed)) {
case "Meutrier":
$this->main->broadcastMessage("Mais le meutrier, dans sa chute, a tué une autre personne.");
$this->main->Meurtier->sendMessage("Choisissez une persone à tuer en la tapant.");
@ -475,9 +636,9 @@ class DayTask extends \pocketmine\scheduler\PluginTask {
$this->turn = 465;
break;
}
} elseif(isset($this->killed2)) {
$this->main->broadcastMessage("Cette nuit, 1 personne est morte. Le " . $this->getRole($this->killed2) . " !");
switch($this->getRole($this->killed)) {
} elseif(isset($this->main->killed2)) {
$this->main->broadcastMessage("Cette nuit, 1 personne est morte. Le " . $this->getRole($this->main->killed2) . " !");
switch($this->getRole($this->main->killed2)) {
case "Meutrier":
$this->main->broadcastMessage("Mais le meutrier, dans sa chute, a tué une autre personne.");
$this->main->Meurtier->sendMessage("Choisissez une persone à tuer en la tapant.");
@ -492,9 +653,334 @@ class DayTask extends \pocketmine\scheduler\PluginTask {
}
break;
case 465:
$this->main->broadcastMessage("Il va faloir élire un maire !");
$this->main->broadcastMessage("Il va faloir élire un maire ! Votez pour qu'un joueur soit maire en lui tapant dessus. Le maire tranche si il y a un debat au moment de tuer un suspect (chaque jour)");
$this->main->current = "maire";
break;
case 525:
$uppestVote = 0;
foreach($this->main->voted as $running) {
if($running > $uppestVote) {
$uppestVote = $running;
}
}
$runnings = [];
foreach($this->main->voted as $name => $running) {
if($running == $uppestVote) {
$runnings[] = $name;
}
}
if(count($runnings) > 1) {
$last = $runnings[count($runnings) - 1];
unset($runnings[count($runnings) - 1]);
$this->main->broadcastMessage(implode(", " . $runnings . " et $last ont le même resultat ! Le maire sera séléctionné parmis ceux ci aux hasard."));
$this->main->maire = $this->main->getServer()->getPlayer($runnings(rand(0, count($runnings))));
$this->main->broadcastMessage("Le nouveau maire est : {$this->main->maire->getName()} !");
}
break;
case 530:
$this->main->broadcastMessage("Maintenant, nous devons choisir un personne qui doit mourir. Tapez la personne que vous trouvez la plus suspecte !");
$this->main->current = "vote";
break;
case 590:
$uppestVote = 0;
foreach($this->main->voted as $running) {
if($running > $uppestVote) {
$uppestVote = $running;
}
}
$runnings = [];
foreach($this->main->voted as $name => $running) {
if($running == $uppestVote) {
$runnings[] = $name;
}
}
if(count($runnings) > 1) {
$last = $runnings[count($runnings) - 1];
unset($runnings[count($runnings) - 1]);
$this->main->broadcastMessage(implode(", " . $runnings) . " et $last ont le même resultat ! Vous pourez tuer celui qui sera tiré au hasard sur ceux ci.");
$this->main->mort = $this->main->getServer()->getPlayer($runnings(rand(0, count($runnings))));
$this->main->broadcastMessage("La personne mise à mort est {$this->main->mort->getName()} ! Tuez la !");
foreach($this->main->getLevel()->getPlayers() as $p) {
$p->addItem(Item::get(Item::IRON_SWORD)->setCompoundTag(\pocketmine\nbt\NBT::parseJSON("{Unbreakable:1}")));
}
$this->main->mort->sendMessage("Ils veulent votre mort ! Fuyez ou tuez vos enemies !");
$this->main->current = "kill";
}
break;
case 650:
foreach($this->main->getLevel()->getPlayers() as $p) {
$p->getInventory()->clearAll();
}
$this->main->task = new DayTask($this->main);
$h = $this->main->getServer()->getScheduler()->scheduleRepeatingTask($this->main->task, 20);
$this->main->task->setHandler($h);
$this->main->getServer()->getScheduler()->cancelTask($this->getTaskId());
break;
}
$this->turn++;
}
}
class DayTask extends \pocketmine\scheduler\PluginTask {
public function __construct(LoupGarou $main) {
parent::__construct($main->getPlugin());
$this->turn = 0;
$this->main = $main;
}
public function onRun($tick) {
switch($this->turn) {
case 1:
$this->main->broadcastMessage("Après une longe journée de travail dure, les villageois partent dormir...");
break;
case 5:
$this->main->broadcastMessage("La nuit tombe sur le petit village de Thiercelieux...");
$this->main->getLevel()->setTime(9000);
break;
case 7:
$this->main->getLevel()->setTime(14000);
$this->main->broadcastMessage("Tout les villageois s'endorment...");
$e = \pocketmine\entity\Effect::getEffectByName("BLINDNESS");
$e->setDuration(9999999);
$e->setAmbient();
$e->setVisible(false);
$e->setAmplifier(3);
foreach($this->getInGamePlayers() as $p) {
$p->addEffect($e);
}
break;
case 10:
$this->turn = 140; // Skip parts of the night so I do not have to rewrite the entitydamage to be 2 times different.
break;
case 140:
if(isset($this->main->Voyante)) {
$this->main->broadcastMessage("La voyante se réveille !");
$this->main->Voyante->removeEffectByName("BLINDNESS");
$this->main->current = "voyante";
$this->main->Voyante->sendMessage("Touchez le joueur dont vous voulez rendre villageois connaitre l'identité. Vous avez une minute donc decidez vous vite !");
} else {
$this->turn = 205;
}
break;
case 200:
$e = \pocketmine\entity\Effect::getEffectByName("BLINDNESS");
$e->setDuration(9999999);
$e->setAmbient();
$e->setVisible(false);
$e->setAmplifier(3);
foreach($this->main->getInGamePlayers() as $p) {
$p->addEffect($e);
}
$this->main->broadcastMessage("La voyante se rendort...");
break;
case 205:
$this->main->broadcastMessage("Les loups garous se réveillent !");
foreach($this->main->LoupGarou as $lg) {
$lg->removeEffectByName("BLINDNESS");
$lg->sendMessage("Tuez un joueur pour le tuer dans le jeu !");
$lg->getInventory()->addItem(Item::get(Item::DIAMOND_SWORD, 0, 1)->setCompoundTag(\pocketmine\nbt\NBT::parseJSON("{display:{Name:'Dent de loup garou'},Unbreakable:1}")));
}
$this->main->Courageuse->removeEffectByName("BLINDNESS");
$this->main->Courageuse->sendMessage("Les loups garous vont faire une nouvelle victime ! Soyez discret(e), espionnez les et tapez les pour les ralentir !");
$this->main->current = "lg";
break;
case 325:
$e = \pocketmine\entity\Effect::getEffectByName("BLINDNESS");
$e->setDuration(9999999);
$e->setAmbient();
$e->setVisible(false);
$e->setAmplifier(3);
foreach($this->main->LoupGarou as $lg) {
$lg->getInventory()->clearAll();
}
foreach($this->main->getInGamePlayers() as $p) {
$p->addEffect($e);
}
$this->main->broadcastMessage("Les loups garou se rendorment...");
break;
case 330:
if(isset($this->main->Sorcière)) {
$this->main->broadcastMessage("La sorcière se réveille !");
$this->main->Sorcière->removeEffectByName("BLINDNESS");
$r = rand(0, 40);
if($r <= 3) {
if($r == 0) {
$this->main->potions["speed"] = true;
$this->main->Sorcière->sendMessage("Vous avez concocté une potion de speed !");
}
if($r == 1) {
$this->main->potions["slowness"] = true;
$this->main->Sorcière->sendMessage("Vous avez concocté une potion de lenteur !");
}
if($r == 2) {
$this->main->potions["regen"] = true;
$this->main->Sorcière->sendMessage("Vous avez concocté une potion de regeneration !");
}
if($r == 3) {
$this->main->potions["poison"] = true;
$this->main->Sorcière->sendMessage("Vous avez concocté une potion de poison !");
}
}
$this->main->Sorcière->sendMessage($this->main->killed->getName() . " a été tué cette nuit ! Souaitez vous le resuciter (boire la potion de vie), ou tuer une autre personne (la taper avec la potion de mort). Faites attention, ces potions n'ont qu'un seul usage dans la partie.");
if($this->main->potions["life"]) {
$this->main->Sorcière->getInventory()->addItem(Item::get(Item::POTION, 21, 1)->setCompoundTag(\pocketmine\nbt\NBT::parseJSON("{display:{Name:'Potion de vie\\n \\n \\n \\n'},Unbreakable:1}")));
}
if($this->main->potions["death"]) {
$this->main->Sorcière->getInventory()->addItem(Item::get(Item::POTION, 23, 1)->setCompoundTag(\pocketmine\nbt\NBT::parseJSON("{display:{Name:'Potion de mort\\n \\n \\n \\n'},Unbreakable:1}")));
}
if($this->main->potions["speed"]) {
$this->main->Sorcière->getInventory()->addItem(Item::get(Item::POTION, 23, 1)->setCompoundTag(\pocketmine\nbt\NBT::parseJSON("{display:{Name:'Potion de speed\\n \\n \\n \\n'},Unbreakable:1}")));
}
if($this->main->potions["slowness"]) {
$this->main->Sorcière->getInventory()->addItem(Item::get(Item::POTION, 23, 1)->setCompoundTag(\pocketmine\nbt\NBT::parseJSON("{display:{Name:'Potion de lenteur\\n \\n \\n \\n'},Unbreakable:1}")));
}
if($this->main->potions["poison"]) {
$this->main->Sorcière->getInventory()->addItem(Item::get(Item::POTION, 23, 1)->setCompoundTag(\pocketmine\nbt\NBT::parseJSON("{display:{Name:'Potion de poison\\n \\n \\n \\n'},Unbreakable:1}")));
}
if($this->main->potions["regen"]) {
$this->main->Sorcière->getInventory()->addItem(Item::get(Item::POTION, 23, 1)->setCompoundTag(\pocketmine\nbt\NBT::parseJSON("{display:{Name:'Potion de regen\\n \\n \\n \\n'},Unbreakable:1}")));
}
$this->main->current = "sorcière";
} else {
$this->turn = 395;
}
break;
case 390:
$e = \pocketmine\entity\Effect::getEffectByName("BLINDNESS");
$e->setDuration(9999999);
$e->setAmbient();
$e->setVisible(false);
$e->setAmplifier(3);
foreach($this->main->getInGamePlayers() as $p) {
$p->addEffect($e);
}
$this->main->broadcastMessage("La sorcière se rendort...");
break;
case 395:
$this->main->broadcastMessage("Le village se reveille...");
$this->main->getLevel()->setTime(23000);
break;
case 400:
$this->main->getLevel()->setTime(0);
if(isset($this->main->killed) and isset($this->main->killed2)) {
$this->main->broadcastMessage("Cette nuit, 2 personnes sont morte. Le " . $this->getRole($this->main->killed) . " et le " . $this->getRole($this->main->killed2) . " !");
if($this->getRole($this->main->killed2) == "Meurtrier") {
$this->main->broadcastMessage("Mais le meutrier, dans sa chute, a tué une autre personne.");
$this->main->Meurtier->sendMessage("Choisissez une persone à tuer en la tapant.");
$this->main->current = "meurtrier";
} else {
$this->main->eliminate($this->main->killed2);
$this->turn = 465;
}
if($this->getRole($this->main->killed) == "Meurtrier") {
$this->main->broadcastMessage("Mais le meutrier, dans sa chute, a tué une autre personne.");
$this->main->Meurtier->sendMessage("Choisissez une persone à tuer en la tapant.");
$this->main->current = "meurtrier";
} else {
$this->main->eliminate($this->main->killed);
$this->turn = 465;
}
if(!isset($m)) $this->turn = 465; else $this->main->current = "meutrier";
} elseif(isset($this->main->killed)) {
$this->main->broadcastMessage("Cette nuit, 1 personne est morte. Le " . $this->getRole($this->main->killed) . " !");
if($this->getRole($this->main->killed) == "Meurtrier") {
$this->main->broadcastMessage("Mais le meutrier, dans sa chute, a tué une autre personne.");
$this->main->Meurtier->sendMessage("Choisissez une persone à tuer en la tapant.");
$this->main->current = "meurtrier";
} else {
$this->main->eliminate($this->main->killed);
$this->turn = 465;
}
} elseif(isset($this->main->killed2)) {
$this->main->broadcastMessage("Cette nuit, 1 personne est morte. Le " . $this->getRole($this->main->killed2) . " !");
if($this->getRole($this->main->killed2) == "Meurtrier") {
$this->main->broadcastMessage("Mais le meutrier, dans sa chute, a tué une autre personne.");
$this->main->Meurtier->sendMessage("Choisissez une persone à tuer en la tapant.");
$this->main->current = "meurtrier";
} else {
$this->main->eliminate($this->main->killed2);
$this->turn = 465;
}
} else {
$this->main->broadcastMessage("Cette nuit, Personne n'est mort ! C'est un miracle !");
}
break;
case 465:
if(isset($this->main->oldMaire)){
if($this->main->oldMaire == $this->main->maire) {
$this->main->maire = $this->main->getLevel()->getPlayers(rand(0, count($this->getLevel()->getPlayers())));
$this->main->broadcastMessage("Le nouveau maire est " . $this->main->maire->getName() . " !");
}
}
$this->turn = 530; // Also to not have to rechoose the mayor one more time.
break;
case 530:
$this->main->broadcastMessage("Maintenant, nous devons choisir un personne qui doit mourir. Tapez la personne que vous trouvez la plus suspecte !");
$this->main->current = "vote";
break;
case 590:
$uppestVote = 0;
foreach($this->main->voted as $running) {
if($running > $uppestVote) {
$uppestVote = $running;
}
}
$runnings = [];
foreach($this->main->voted as $name => $running) {
if($running == $uppestVote) {
$runnings[] = $name;
}
}
if(count($runnings) > 1) {
$last = $runnings[count($runnings) - 1];
unset($runnings[count($runnings) - 1]);
$this->main->broadcastMessage(implode(", " . $runnings) . " et $last ont le même resultat ! Vous pourez tuer celui qui sera tiré au hasard sur ceux ci.");
$this->main->mort = $this->main->getServer()->getPlayer($runnings(rand(0, count($runnings))));
$this->main->broadcastMessage("La personne mise à mort est {$this->main->mort->getName()} ! Tuez la !");
foreach($this->main->getLevel()->getPlayers() as $p) {
$p->addItem(Item::get(Item::IRON_SWORD)->setCompoundTag(\pocketmine\nbt\NBT::parseJSON("{Unbreakable:1}")));
}
$this->main->mort->sendMessage("Ils veulent votre mort ! Fuyez ou tuez vos enemies !");
$this->main->current = "kill";
}
break;
case 650:
foreach($this->main->getLevel()->getPlayers() as $p) {
$p->getInventory()->clearAll();
}
$this->turn = 0;
break;
}
if(isset($this->speed)) {
$e = \pocketmine\entity\Effect::getEffect(1);
$e->setAmplifier(2);
$e->setVisible(false);
$e->setDuration(40);
$this->speed->addEffect($e);
}
if(isset($this->slow)) {
$e = \pocketmine\entity\Effect::getEffect(2);
$e->setAmplifier(2);
$e->setVisible(false);
$e->setDuration(40);
$this->slow->addEffect($e);
}
if(isset($this->poison)) {
$e = \pocketmine\entity\Effect::getEffectByName("POISON");
$e->setAmplifier(2);
$e->setVisible(false);
$e->setDuration(40);
$this->poison->addEffect($e);
}
if(isset($this->regen)) {
$e = \pocketmine\entity\Effect::getEffect(10);
$e->setAmplifier(2);
$e->setVisible(false);
$e->setDuration(40);
$this->regen->addEffect($e);
}
$this->turn++;
}
}

View file

@ -4,7 +4,6 @@
#world:
# maxplayers: 8
# minplayers: 2
# SnowLevels: [8, 13]
# center: [x, z]
# SnowBlock: 80
# WinCommand: give {winner} diamond
@ -14,7 +13,6 @@
spleef:
maxplayers: 8
minplayers: 2
SnowLevels: [8, 13]
center: [0, 0]
SnowBlock: 80
WinCommand: "give {winner} diamond"

346
games/TNTRun.php Normal file
View file

@ -0,0 +1,346 @@
<?php
use Ad5001\GameManager\Game;
use pocketmine\Player;
use pocketmine\item\Item;
use pocketmine\block\Block;
use pocketmine\math\Vector3;
use pocketmine\level\Level;
use pocketmine\nbt\tag\CompoundTag;
use pocketmine\nbt\tag\ListTag;
use pocketmine\nbt\tag\StringTag;
class TNTRun extends Game {
public function __construct(string $name, Level $level) {
parent::__construct($name, $level);
$this->getLogger()->info("TNTRun enabled ! Thanks for choosing TNTRun and remeber to leave a 'review' on projects.ad5001.ga/GameManager/TNTRun/ if you like it :)");
$text = '# Welcome to TNTRun config !
# Configure here the max stuffs about the TNTRun game.
# Example:
#world:
# maxplayers: 8
# minplayers: 2
# center: [x, z]
# TNTBlock: 13
# WinCommand: give {winner} diamond
# # This is optional but if you want super customisation...
# # WinPHPCode: "$this->getServer()->broadcastMessage($this->winner . \' won the game !\');"
';
if(!file_exists($this->getDataFolder() . "/config.yml")) {
file_put_contents($this->getDataFolder()."/config.yml", $text);
}
if(!is_array($this->getConfig()->get($this->getLevel()->getName()))) {
$this->getConfig()->set($this->getLevel()->getName(), ["minplayers" => 2, "maxplayers" => 8, "center" =>[0, 0], "TNTBlock" => 13, "WinCommand" => "give {winner} diamond"]);
}
$this->doubleJump = [];
$this->registerCommand("tntrun", "Main TNTRun command !", "/tntrun <subcommand> [parameter]", [], "gamemanager.command.op");
}
public function onGameStart() {
$this->layers = [];
for($y = 0; $y <= 128; $y++) {
if($this->getLevel()->getBlock(new Vector3($this->getConfig()->get($this->getLevel()->getName())["center"][0], $y, $this->getConfig()->get($this->getLevel()->getName())["center"][1]))->getId() == $this->getConfig()->get($this->getLevel()->getName())["TNTBlock"]) {
$this->layers[] = $y;
}
}
foreach($this->getLevel()->getPlayers() as $player) {
$player->sendMessage("§l§o§6[§r§l§bTNTRun§o§6]§r§f Game started !");
$this->tpSafePlayer($player);
$player->setGamemode(0);
$i = Item::get(Item::FEATHER, 0, 10);
$i->setCompoundTag(\pocketmine\nbt\NBT::parseJSON('{display:{Name:"§rDouble jump"},doubleJump:"true"}'));
$player->getInventory()->addItem($i);
$this->doubleJump[$player->getName()] = 10;
}
}
public function onInteract(\pocketmine\event\player\PlayerInteractEvent $event) {
if($event->getPlayer()->getInventory()->getItemInHand()->getId() == Item::FEATHER and $event->getPlayer()->getInventory()->getItemInHand()->hasCompoundTag()) {
// echo $event->getPlayer()->getInventory()->getItemInHand()->getCompoundTag();
if(strpos($event->getPlayer()->getInventory()->getItemInHand()->getCompoundTag(), "doubleJump")) {
$yaw = $event->getPlayer()->yaw;
if (0 <= $yaw and $yaw < 22.5) {
$this->doubleJump($event->getPlayer(), 0, 0, -15040, -0.125);
} elseif (22.5 <= $yaw and $yaw < 67.5) {
$this->doubleJump($event->getPlayer(), 0, 15040, -15040, -0.125);
} elseif (67.5 <= $yaw and $yaw < 112.5) {
$this->doubleJump($event->getPlayer(), 0, 15040, 0, -0.125);
} elseif (112.5 <= $yaw and $yaw < 157.5) {
$this->doubleJump($event->getPlayer(), 0, 15040, 15040, -0.125);
} elseif (157.5 <= $yaw and $yaw < 202.5) {
$this->doubleJump($event->getPlayer(), 0, 0, 15040, -0.125);
} elseif (202.5 <= $yaw and $yaw < 247.5) {
$this->doubleJump($event->getPlayer(), 0, -15040, 15040, -0.125);
} elseif (247.5 <= $yaw and $yaw < 292.5) {
$this->doubleJump($event->getPlayer(), 0, -15040, 0, -0.125);
} elseif (292.5 <= $yaw and $yaw < 337.5) {
$this->doubleJump($event->getPlayer(), 0, -15040, -15040, -0.125);
} elseif (337.5 <= $yaw and $yaw < 360) {
$this->doubleJump($event->getPlayer(), 0, 0, -15040, -0.125);
}
}
}
}
public function doubleJump(Player $player, $damage, $x, $z, $base) {
$f = sqrt(-$x * -$x + -$z * -$z);
if($f <= 0){
return;
}
$f = 1 / $f;
$motion = new Vector3($player->motionX, $player->motionY, $player->motionZ);
$motion->x /= 2;
$motion->y /= 2;
$motion->z /= 2;
$motion->x += -$x * $f * -$base;
$motion->y = 0.75;
// echo $motion->y;
$motion->z += -$z * $f * -$base;
// if($motion->y > $base){
// $motion->y = $base + 0.2;
// }
if(!isset($this->doubleJump[$player->getName()])) {
$this->doubleJump[$player->getName()] = 10;
}
if($this->doubleJump[$player->getName()] > 0) {
$player->setMotion($motion);
$player->getInventory()->getItemInHand()->setCount($this->doubleJump[$player->getName()]);
$this->doubleJump[$player->getName()]--;
$player->sendPopup("§c" . $this->doubleJump[$player->getName()] . " double jumps left");
}
}
public function tpSafePlayer(Player $player) {
$xrand = rand(-3 * count($this->getLevel()->getPlayers()) - 1, 3 * count($this->getLevel()->getPlayers()) - 1);
$zrand = rand(-3 * count($this->getLevel()->getPlayers()) - 1, 3 * count($this->getLevel()->getPlayers()) - 1);
$v3 = new Vector3($this->getConfig()->get($this->getLevel()->getName())["center"][0] + $xrand, $this->layers[count($this->layers) - 1], $this->getConfig()->get($this->getLevel()->getName())["center"][0] + $xrand);
if($this->getLevel()->getBlock($v3)->getId() == $this->getConfig()->get($this->getLevel()->getName())["TNTBlock"] and $this->getLevel()->getBlock(new Vector3($v3->x, $v3->y+1, $v3->z))->getId() == 0) {
$player->teleport(new Vector3($v3->x, $v3->y+1, $v3->z));
return true;
} else {
return $this->tpSafePlayer($player);
}
}
public function onGameStop() {
$this->getServer()->getScheduler()->cancelTask($this->task->getTaskId());
foreach($this->getLevel()->getPlayers() as $p) {
$p->setGamemode(0);
if($p !== $this->winner) {
$p->teleport($this->getServer()->getDefaultLevel()->getSafeSpawn());
$p->sendMessage("§l§o§4[§r§l§fTNTRun§o§4]§r§f" . $this->winner->getName() . " won the game ! Teleporting back to spawn...");
} else {
$this->winner->sendMessage("§l§o§4[§r§l§fTNTRun§o§4]§r§fYou won the game ! Teleporting back to spawn...");
}
if(isset($this->getConfig()->get($this->getLevel()->getName())["WinCommand"])) {
$this->getServer()->dispatchCommand(new \pocketmine\command\ConsoleCommandSender(), str_ireplace("{winner}", $this->winner->getName(), $this->getConfig()->get($this->getLevel()->getName())["WinCommand"]));
}
if(isset($this->getConfig()->get($this->getLevel()->getName())["WinPHPCode"])) {
eval($this->getConfig()->get($this->getLevel()->getName())["WinPHPCode"]);
}
foreach($this->layers as $y) {
for($x = -3 * count($this->getMaxPlayers()) + $this->getConfig()->get($this->getLevel()->getName())["center"][0]; $x <= 3 * count($this->getMaxPlayers()) + $this->getConfig()->get($this->getLevel()->getName())["center"][0]; $x++) {
for($z = -3 * count($this->getMaxPlayers()) + $this->getConfig()->get($this->getLevel()->getName())["center"][1]; $z <= 3 * count($this->getMaxPlayers()) + $this->getConfig()->get($this->getLevel()->getName())["center"][1]; $z++) {
if($this->getLevel()->getBlock(new Vector3($x, $y, $z))->getId() == 0) {
$this->getLevel()->setBlock(new Vector3($x, $y, $z), Item::fromString($this->getConfig()->get($this->getLevel()->getName())["TNTBlock"])->getBlock());
}
}
}
}
}
}
public function onJoin(Player $player) {
if($this->main->getInGamePlayers($this->getLevel()) + 1 >= $this->getMinPlayers() and !$this->isStarted()) {
// $this->getLogger()->info("Started !");
$h = $this->getServer()->getScheduler()->scheduleRepeatingTask($t = new TNTRunStartTask($this), 20);
$t->setHandler($h);
if(isset($this->task)) {
$this->getServer()->getScheduler()->cancelTask($this->task->getTaskId());
}
$this->task = $t;
}
if($this->main->getInGamePlayers($this->getLevel()) + 1 > $this->getMaxPlayers() and !$this->isStarted()) {
$player->teleport($this->getServer()->getDefaultLevel()->getSafeSpawn());
$player->sendMessage("Too many players already in the game !");
} elseif(!$this->isStarted()) {
$player->setGamemode(2);
$player->getInventory()->clearAll();
}
foreach($this->getLevel()->getPlayers() as $p) {
$p->sendMessage(\pocketmine\utils\TextFormat::YELLOW . $player->getName() . " joined the TNTRun game. " . ($this->getMinPlayers() - $this->getPlugin()->getInGamePlayers($this->getLevel()) - 1) ." players left before starting !");
}
$player->sendMessage(\pocketmine\utils\TextFormat::YELLOW . "You joined the TNTRun game. " . ($this->getMinPlayers() - $this->getPlugin()->getInGamePlayers($this->getLevel()) - 1) ." players left before starting !");
}
public function onQuit(Player $player) {
if($player->isSurvival() or $player->isAdventure()) {
if($this->isStarted()) {
foreach($this->getLevel()->getPlayers() as $p) {
$p ->sendMessage(\pocketmine\utils\TextFormat::YELLOW . $player->getName() . " left the TNTRun game. {$this->getPlugin()->getInGamePlayers($this->getLevel())} players left !", [$this->getLevel()->getPlayers()]);
}
$player->sendMessage(\pocketmine\utils\TextFormat::YELLOW . "You left the TNTRun game. " . ($this->getMinPlayers() - $this->getPlugin()->getInGamePlayers($this->getLevel())) ." players left !");
} else {
foreach($this->getLevel()->getPlayers() as $p) {
$p ->sendMessage(\pocketmine\utils\TextFormat::YELLOW . $player->getName() . " left the TNTRun game. {$this->getPlugin()->getInGamePlayers($this->getLevel())} players left before starting !", [$this->getLevel()->getPlayers()]);
}
$player->sendMessage(\pocketmine\utils\TextFormat::YELLOW . "You left the TNTRun game. " . ($this->getMinPlayers() - $this->getPlugin()->getInGamePlayers($this->getLevel())) ." players left before starting !");
}
}
}
public function onPlayerDeath(\pocketmine\event\player\PlayerDeathEvent $event) {
$event->getPlayer()->setGamemode(3);
$event->getPlayer()->removeEffect(3);
if(($this->getPlugin()->getInGamePlayers($this->getLevel()) - 1) == 1) {
foreach($this->getLevel()->getPlayers() as $p) {
if($p->isSurvival()) {
$this->winner = $p;
$p->removeEffect(3);
$p->getInventory()->clearAll();
$this->stop();
}
}
$this->stop();
} elseif(($this->getPlugin()->getInGamePlayers($this->getLevel()) - 1) == 0) {
$this->winner = $event->getPlayer();
$event->getPlayer()->getInventory()->clearAll();
$this->stop();
}
}
public function onBreak(\pocketmine\event\block\BlockBreakEvent $event) {
$event->setCancelled();
if($event->getPlayer()->isOp() and $event->getPlayer()->isCreative() and !$this->isStarted()) {
$event->setCancelled(false);
}
}
public function onEntityDamage(\pocketmine\event\entity\EntityDamageEvent $event) {
if(!in_array($event->getCause(), [7, 11, 12, 13, 14])) {
$event->setCancelled();
}
}
public function onCommand(\pocketmine\command\CommandSender $sender, \pocketmine\command\Command $cmd, $label, array $args) {
if(strtolower($cmd->getName()) == "tntrun") {
if(isset($args[0])) {
switch(strtolower($args[0])) {
case "start":
if(isset($this->gm->getLevels()[$sender->getLevel()->getName()])) {
if(!$this->gm->getLevels()[$sender->getLevel()->getName()]->isStarted() and $this->gm->getLevels()[$sender->getLevel()->getName()]->getName() == "TNTRun") {
$h = $this->getServer()->getScheduler()->scheduleRepeatingTask($t = new TNTRunStartTask($this), 20);
$t->setHandler($h);
}
}
break;
case "stop":
if(isset($this->gm->getLevels()[$sender->getLevel()->getName()])) {
if($this->gm->getLevels()[$sender->getLevel()->getName()]->isStarted() and $this->gm->getLevels()[$sender->getLevel()->getName()]->getName() == "TNTRun") {
$this->winner = $sender;
$this->stop();
}
}
break;
}
}
}
}
public function getMinPlayers() : int {
// echo $this->getConfig()->get($this->getLevel()->getName())["minplayers"] . PHP_EOL;
return $this->getConfig()->get($this->getLevel()->getName())["minplayers"];
}
public function getMaxPlayers() : int {
// echo $this->getConfig()->get($this->getLevel()->getName())["maxplayers"] . PHP_EOL;
return $this->getConfig()->get($this->getLevel()->getName())["maxplayers"];
}
public function getName() : string {
return "TNTRun";
}
}
class TNTRunStartTask extends \pocketmine\scheduler\PluginTask {
public function __construct(TNTRun $main) {
parent::__construct($main->getPlugin());
$this->seconds = 0;
$this->main = $main;
}
public function onRun($tick) {
if($this->getOwner()->getInGamePlayers($this->main->getLevel()) < $this->main->getMinPlayers()) {
$this->main->getServer()->broadcastMessage("Start cancelled ! Not enought players to start !");
$this->main->getServer()->getScheduler()->cancelTask($this->getTaskId());
} else {
switch($this->seconds) {
case 0:
case 10:
case 20:
case 25:
case 26:
case 27:
case 28:
case 29:
foreach($this->main->getLevel()->getPlayers() as $p) {
$p->sendMessage("§l§o§4[§r§l§fTNTRun§o§4]§r§f " . strval(30 - $this->seconds) . " seconds left before the game starts !");
}
break;
case 30:
$this->main->start();
$this->main->broadcastMessage("§l§o§4[§r§l§fTNTRun§o§4]§r§f 5 seconds before starts breaking...");
case 35:
$h = $this->main->getServer()->getScheduler()->scheduleRepeatingTask($this->main->task = new TNTRunBreakBlockTask($this->main), 5);
$this->main->task->setHandler($h);
$this->main->getServer()->getScheduler()->cancelTask($this->getTaskId());
break;
}
$this->seconds++;
}
}
}
class TNTRunBreakBlockTask extends \pocketmine\scheduler\PluginTask {
public function __construct(TNTRun $main) {
$this->level = $main->getLevel();
$this->main = $main;
parent::__contruct($main);
}
public function onRun($tick) {
foreach($this->level->getPlayers() as $p) {
if($this->level->getBlock(new Vector3($p->x, $p->y-1, $p->z))->getId() == $this->main->getConfig()->get($this->level->getName())["TNTBlock"]) {
$this->level->setBlock(new Vector3($p->x, $p->y-1, $p->z), new Block(0, 0));
}
}
}
}

11
games/TNTRun/config.yml Normal file
View file

@ -0,0 +1,11 @@
# Welcome to TNTRun config !
# Configure here the max stuffs about the TNTRun game.
# Example:
#world:
# maxplayers: 8
# minplayers: 2
# center: [x, z]
# TNTBlock: 80
# WinCommand: give {winner} diamond
# # This is optional but if you want super customisation...
# WinPHPCode: "$this->getServer()->broadcastMessage($this->winner . ' won the game !');"

View file

@ -147,7 +147,7 @@ abstract class Game {
public function onEntityDamage(\pocketmine\event\entity\EntityDamageEvent $event) {}
public function onProjectileLauch(\pocketmine\event\entity\ProjectileLauchEvent $event) {}
public function onProjectileLaunch(\pocketmine\event\entity\ProjectileLauchEvent $event) {}
public function onProjectileHit(\pocketmine\event\entity\ProjectileHitEvent $event) {}

View file

@ -63,10 +63,10 @@ class GameManager {
if(isset($this->games[$game])) {
$this->levels[$level->getName()] = new $this->games[$game]($game, $level);
} else {
$this->main->getLogger()->warn("No game found with name $game");
$this->main->getLogger()->warning("No game found with name $game");
}
} else {
$this->main->getLogger()->warn("{$level->getName()} is already registered.");
$this->main->getLogger()->warning("{$level->getName()} is already registered.");
}
}

View file

@ -284,9 +284,9 @@ public function onInteract(PlayerInteractEvent $event) {
}
public function onProjectileLauch(\pocketmine\event\entity\ProjectileLauchEvent $event) {
public function onProjectileLaunch(\pocketmine\event\entity\ProjectileLaunchEvent $event) {
if(isset($this->manager->getLevels()[$event->getEntity()->getLevel()->getName()])) {
$this->manager->getLevels()[$event->getEntity()->getLevel()->getName()]->onProjectileLauch($event);
$this->manager->getLevels()[$event->getEntity()->getLevel()->getName()]->onProjectileLaunch($event);
}
}