Merge branch 'master' of ssh://184.154.0.242:7999/min/mineplex
This commit is contained in:
commit
4a71823d55
|
@ -1,17 +1,23 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Created by PhpStorm.
|
* Created by PhpStorm.
|
||||||
* User: Exerosis
|
* User: TheMineBench
|
||||||
* Date: 7/1/2015
|
* Date: 7/1/2015
|
||||||
* Time: 1:25 PM
|
* Time: 1:25 PM
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$array = array('1','2','3','4','5');
|
|
||||||
|
|
||||||
foreach ($array as $key => $moo)
|
function myfunction($a,$b)
|
||||||
{
|
{
|
||||||
if ($moo == '2')
|
if ($a===$b)
|
||||||
unset ($array[$key]);
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return ($a>$b)?1:-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
print_r($array);
|
$a1=array(new stdClass(),"b"=>"green","c"=>"blue");
|
||||||
|
$a2=array("a"=>"blue","b"=>"black","e"=>"blue");
|
||||||
|
|
||||||
|
$result=array_udiff($a1,$a2,"myfunction");
|
||||||
|
print_r($result);
|
|
@ -2,24 +2,26 @@
|
||||||
|
|
||||||
namespace mineplex\plugin;
|
namespace mineplex\plugin;
|
||||||
|
|
||||||
|
use mineplex\plugin\bench\arenas\MultiGameArena;
|
||||||
use mineplex\plugin\bench\arenas\SingleGameArena;
|
use mineplex\plugin\bench\game\factory\TestGameFactory;
|
||||||
use mineplex\plugin\core\updater\UpdateEvent;
|
|
||||||
use mineplex\plugin\bench\game\games\pvp\Pvp;
|
|
||||||
use mineplex\plugin\packets\StrangePacket;
|
|
||||||
use mineplex\plugin\util\UtilString;
|
|
||||||
use pocketmine\event\Listener;
|
use pocketmine\event\Listener;
|
||||||
use pocketmine\event\player\PlayerCommandPreprocessEvent;
|
|
||||||
use pocketmine\event\player\PlayerJoinEvent;
|
use pocketmine\event\player\PlayerJoinEvent;
|
||||||
|
use pocketmine\event\player\PlayerLoginEvent;
|
||||||
|
use pocketmine\event\player\PlayerQuitEvent;
|
||||||
use pocketmine\plugin\PluginBase;
|
use pocketmine\plugin\PluginBase;
|
||||||
|
use mineplex\plugin\bench\arenas\Arena;
|
||||||
use pocketmine\Server;
|
use pocketmine\Server;
|
||||||
|
|
||||||
class Main extends PluginBase implements Listener
|
class Main extends PluginBase implements Listener
|
||||||
{
|
{
|
||||||
|
/** @var Arena */
|
||||||
|
private $arena;
|
||||||
|
|
||||||
public function onEnable()
|
public function onEnable()
|
||||||
{
|
{
|
||||||
new SingleGameArena($this, new Pvp());
|
|
||||||
|
|
||||||
|
$this->arena = new MultiGameArena($this, new TestGameFactory());
|
||||||
|
Server::getInstance()->getPluginManager()->registerEvents($this, $this);
|
||||||
|
|
||||||
//$this->getServer()->getScheduler()->scheduleRepeatingTask(new TickTask($this), 1);
|
//$this->getServer()->getScheduler()->scheduleRepeatingTask(new TickTask($this), 1);
|
||||||
|
|
||||||
|
@ -27,64 +29,17 @@ class Main extends PluginBase implements Listener
|
||||||
//new Updater($this);
|
//new Updater($this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onDisable()
|
public function onLogin(PlayerLoginEvent $event)
|
||||||
{
|
{
|
||||||
|
if ($this->arena->canJoin($event->getPlayer()))
|
||||||
|
retun;
|
||||||
|
|
||||||
|
$event->setKickMessage("Unable to join game!");
|
||||||
|
$event->setCancelled();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function joinMessage(PlayerJoinEvent $event)
|
public function onJoin(PlayerJoinEvent $event)
|
||||||
{
|
{
|
||||||
$name = $event->getPlayer()->getName();
|
$this->arena->addPlayer($event->getPlayer());
|
||||||
|
|
||||||
$player = Server::getInstance()->getPlayer($name);
|
|
||||||
|
|
||||||
$event->setJoinMessage($player->getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function onPlayerJoin(PlayerJoinEvent $event)
|
|
||||||
{
|
|
||||||
$event->getPlayer()->sendMessage("Welcome to the server " . $event->getPlayer()->getName() . "!");
|
|
||||||
|
|
||||||
$this->getLogger()->info($event->getPlayer()->getName() . " UID: " . $event->getPlayer()->getUniqueId());
|
|
||||||
|
|
||||||
if (UtilString::startsWith( $event->getPlayer()->getName(), "chissling"))
|
|
||||||
{
|
|
||||||
$event->getPlayer()->setNameTag("// chiss //");
|
|
||||||
$event->getPlayer()->setDisplayName("// chiss //");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function onPlayerCommand(PlayerCommandPreprocessEvent $event)
|
|
||||||
{
|
|
||||||
if (UtilString::startsWith($event->getMessage(), "/mineplex"))
|
|
||||||
{
|
|
||||||
$event->setCancelled(true);
|
|
||||||
|
|
||||||
$event->getPlayer()->sendMessage("Sending you to: MINEPLEX");
|
|
||||||
|
|
||||||
$packet = new StrangePacket();
|
|
||||||
$packet->address = "69.175.104.154";
|
|
||||||
|
|
||||||
$event->getPlayer()->directDataPacket($packet);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (UtilString::startsWith($event->getMessage(), "/ip "))
|
|
||||||
{
|
|
||||||
$event->setCancelled(true);
|
|
||||||
|
|
||||||
$ip = substr($event->getMessage(), 4, strlen($event->getMessage()));
|
|
||||||
|
|
||||||
$event->getPlayer()->sendMessage("Sending you to: " . $ip);
|
|
||||||
|
|
||||||
$packet = new StrangePacket();
|
|
||||||
$packet->address = $ip;
|
|
||||||
|
|
||||||
$event->getPlayer()->directDataPacket($packet);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function onTick(UpdateEvent $event)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Created by PhpStorm.
|
* Created by PhpStorm.
|
||||||
* User: Exerosis
|
* User: Bench
|
||||||
* Date: 6/30/2015
|
* Date: 6/30/2015
|
||||||
* Time: 1:35 PM
|
* Time: 1:35 PM
|
||||||
*/
|
*/
|
||||||
|
@ -12,7 +12,13 @@ use pocketmine\Player;
|
||||||
|
|
||||||
interface Arena
|
interface Arena
|
||||||
{
|
{
|
||||||
public function getCurrentGame();
|
/**
|
||||||
|
* @param Player $player
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function canJoin(Player $player);
|
||||||
|
public function addPlayer(Player $player);
|
||||||
|
public function removePlayer(Player $player);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Player[]
|
* @return Player[]
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Created by PhpStorm.
|
* Created by PhpStorm.
|
||||||
* User: Exerosis
|
* User: Bench
|
||||||
* Date: 6/30/2015
|
* Date: 6/30/2015
|
||||||
* Time: 9:06 PM
|
* Time: 9:06 PM
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -0,0 +1,102 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: Bench
|
||||||
|
* Date: 7/4/2015
|
||||||
|
* Time: 12:14 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace mineplex\plugin\bench\arenas;
|
||||||
|
|
||||||
|
use mineplex\plugin\bench\arenas\events\ArenaEndEvent;
|
||||||
|
use mineplex\plugin\bench\game\factory\GameFactory;
|
||||||
|
use pocketmine\event\Listener;
|
||||||
|
use pocketmine\plugin\Plugin;
|
||||||
|
use pocketmine\event\player\PlayerJoinEvent;
|
||||||
|
use pocketmine\event\player\PlayerQuitEvent;
|
||||||
|
use pocketmine\Player;
|
||||||
|
use pocketmine\Server;
|
||||||
|
use mineplex\plugin\bench\game\Game;
|
||||||
|
use mineplex\plugin\bench\arenas\events\ArenaCanJoinEvent;
|
||||||
|
use mineplex\plugin\bench\arenas\events\ArenaJoinEvent;
|
||||||
|
use mineplex\plugin\bench\arenas\events\ArenaQuitEvent;
|
||||||
|
use mineplex\plugin\bench\arenas\events\ArenaStartEvent;
|
||||||
|
|
||||||
|
|
||||||
|
class MultiGameArena implements Arena, Listener
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var Player[] */
|
||||||
|
private $players = array();
|
||||||
|
|
||||||
|
private $plugin;
|
||||||
|
|
||||||
|
private $gameFactory;
|
||||||
|
private $game;
|
||||||
|
|
||||||
|
|
||||||
|
public function __construct(Plugin $plugin, GameFactory $gameFactory)
|
||||||
|
{
|
||||||
|
Server::getInstance()->getPluginManager()->registerEvents($this, $plugin);
|
||||||
|
$this->gameFactory = $gameFactory;
|
||||||
|
$this->plugin = $plugin;
|
||||||
|
$this->startGame();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function canJoin(Player $player)
|
||||||
|
{
|
||||||
|
$event = new ArenaCanJoinEvent($this, $player);
|
||||||
|
$this->plugin->getServer()->getPluginManager()->callEvent($event);
|
||||||
|
return !$event->isCancelled();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addPlayer(Player $player)
|
||||||
|
{
|
||||||
|
$this->plugin->getServer()->getPluginManager()->callEvent(new ArenaJoinEvent($this, $player));
|
||||||
|
array_push($this->players, $player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function removePlayer(Player $player)
|
||||||
|
{
|
||||||
|
if (($key = array_search($player, $this->players, true)) !== FALSE) {
|
||||||
|
unset($this->players[$key]);
|
||||||
|
}
|
||||||
|
Server::getInstance()->broadcastMessage("Calling ArenaQuitEvent");
|
||||||
|
$this->plugin->getServer()->getPluginManager()->callEvent(new ArenaQuitEvent($this, $player));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onQuit(PlayerQuitEvent $event)
|
||||||
|
{
|
||||||
|
$this->removePlayer($event->getPlayer());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function endGame()
|
||||||
|
{
|
||||||
|
Server::getInstance()->getPluginManager()->callEvent(new ArenaEndEvent($this));
|
||||||
|
$this->startGame();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function startGame()
|
||||||
|
{
|
||||||
|
$this->game = $this->gameFactory->getGame();
|
||||||
|
$this->game->start($this);
|
||||||
|
Server::getInstance()->getPluginManager()->callEvent(new ArenaStartEvent($this));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function getPlayers()
|
||||||
|
{
|
||||||
|
return $this->players;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCurrentGame()
|
||||||
|
{
|
||||||
|
return $this->game;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPlugin()
|
||||||
|
{
|
||||||
|
return $this->plugin;
|
||||||
|
}
|
||||||
|
}
|
|
@ -31,7 +31,6 @@ class SingleGameArena implements Arena, Listener {
|
||||||
|
|
||||||
public function __construct(Plugin $plugin, Game $game)
|
public function __construct(Plugin $plugin, Game $game)
|
||||||
{
|
{
|
||||||
print 'SimpleGameArena Created!';
|
|
||||||
Server::getInstance()->getPluginManager()->registerEvents($this, $plugin);
|
Server::getInstance()->getPluginManager()->registerEvents($this, $plugin);
|
||||||
$this->game = $game;
|
$this->game = $game;
|
||||||
$this->plugin = $plugin;
|
$this->plugin = $plugin;
|
||||||
|
@ -100,7 +99,7 @@ class SingleGameArena implements Arena, Listener {
|
||||||
foreach ($this->players as $player)
|
foreach ($this->players as $player)
|
||||||
{
|
{
|
||||||
Server::getInstance()->broadcastMessage((string)$player->getName());
|
Server::getInstance()->broadcastMessage((string)$player->getName());
|
||||||
$player->kick('Game Over...');
|
$player->kick('Game Over...', false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Created by PhpStorm.
|
* Created by PhpStorm.
|
||||||
* User: Exerosis
|
* User: Bench
|
||||||
* Date: 6/30/2015
|
* Date: 6/30/2015
|
||||||
* Time: 9:22 PM
|
* Time: 9:22 PM
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Created by PhpStorm.
|
* Created by PhpStorm.
|
||||||
* User: Exerosis
|
* User: Bench
|
||||||
* Date: 6/30/2015
|
* Date: 6/30/2015
|
||||||
* Time: 10:12 PM
|
* Time: 10:12 PM
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Created by PhpStorm.
|
* Created by PhpStorm.
|
||||||
* User: Exerosis
|
* User: Bench
|
||||||
* Date: 6/30/2015
|
* Date: 6/30/2015
|
||||||
* Time: 9:22 PM
|
* Time: 9:22 PM
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Created by PhpStorm.
|
* Created by PhpStorm.
|
||||||
* User: Exerosis
|
* User: Bench
|
||||||
* Date: 6/30/2015
|
* Date: 6/30/2015
|
||||||
* Time: 9:22 PM
|
* Time: 9:22 PM
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Created by PhpStorm.
|
* Created by PhpStorm.
|
||||||
* User: Exerosis
|
* User: Bench
|
||||||
* Date: 6/30/2015
|
* Date: 6/30/2015
|
||||||
* Time: 10:12 PM
|
* Time: 10:12 PM
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Created by PhpStorm.
|
* Created by PhpStorm.
|
||||||
* User: Exerosis
|
* User: TheMineBench
|
||||||
* Date: 7/1/2015
|
* Date: 7/1/2015
|
||||||
* Time: 5:52 PM
|
* Time: 5:52 PM
|
||||||
*/
|
*/
|
||||||
|
@ -48,9 +48,6 @@ class GameStateCountdown implements Listener, BenchTask {
|
||||||
if ($event->getArena() !== $this->arena)
|
if ($event->getArena() !== $this->arena)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Server::getInstance()->broadcastMessage("ToGameState:".(string)$event->getToGameState());
|
|
||||||
Server::getInstance()->broadcastMessage("StartGameState: $this->startGameState");
|
|
||||||
|
|
||||||
if ($event->getToGameState() == $this->startGameState)
|
if ($event->getToGameState() == $this->startGameState)
|
||||||
{
|
{
|
||||||
BenchSchedule::runTaskTimer($this, 1000, 1000);
|
BenchSchedule::runTaskTimer($this, 1000, 1000);
|
||||||
|
@ -74,16 +71,17 @@ class GameStateCountdown implements Listener, BenchTask {
|
||||||
{
|
{
|
||||||
print "Count: $this->count"."\n";
|
print "Count: $this->count"."\n";
|
||||||
|
|
||||||
$this->popup();
|
|
||||||
|
|
||||||
$this->count--;
|
|
||||||
|
|
||||||
if ($this->count <= 0)
|
if ($this->count <= 0)
|
||||||
{
|
{
|
||||||
$this->gameStateComponent->setGameState($this->setGameState);
|
$this->gameStateComponent->setGameState($this->setGameState);
|
||||||
$data->end();
|
$data->end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->popup();
|
||||||
|
|
||||||
|
$this->count--;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function popup()
|
public function popup()
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Created by PhpStorm.
|
* Created by PhpStorm.
|
||||||
* User: Exerosis
|
* User: TheMineBench
|
||||||
* Date: 7/1/2015
|
* Date: 7/1/2015
|
||||||
* Time: 10:18 PM
|
* Time: 10:18 PM
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Created by PhpStorm.
|
* Created by PhpStorm.
|
||||||
* User: Exerosis
|
* User: TheMineBench
|
||||||
* Date: 7/2/2015
|
* Date: 7/2/2015
|
||||||
* Time: 12:44 AM
|
* Time: 12:44 AM
|
||||||
*/
|
*/
|
||||||
|
@ -16,6 +16,8 @@ use mineplex\plugin\bench\game\components\gamestate\GameState;
|
||||||
use pocketmine\event\HandlerList;
|
use pocketmine\event\HandlerList;
|
||||||
use pocketmine\event\Listener;
|
use pocketmine\event\Listener;
|
||||||
use pocketmine\Server;
|
use pocketmine\Server;
|
||||||
|
use RecursiveArrayIterator;
|
||||||
|
use RecursiveIteratorIterator;
|
||||||
|
|
||||||
class GameStateFeatureManager implements Listener {
|
class GameStateFeatureManager implements Listener {
|
||||||
|
|
||||||
|
@ -44,22 +46,97 @@ class GameStateFeatureManager implements Listener {
|
||||||
if ($event->getArena() !== $this->arena)
|
if ($event->getArena() !== $this->arena)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
$lastFeatures = $this->features[$event->getFromGameState()];
|
/** @var Feature[] $lastFeatures */
|
||||||
$theseFeatures = $this->features[$event->getToGameState()];
|
|
||||||
|
|
||||||
$toEnable = array_diff($theseFeatures, $lastFeatures);
|
if (isset($this->features[$event->getFromGameState()]) || array_key_exists($event->getFromGameState(), $this->features))
|
||||||
$toDisable = array_diff($lastFeatures, $theseFeatures);
|
$lastFeatures = $this->features[$event->getFromGameState()];
|
||||||
|
else
|
||||||
|
$lastFeatures = [];
|
||||||
|
|
||||||
|
|
||||||
|
/** @var Feature[] $theseFeatures */
|
||||||
|
|
||||||
|
if (isset($this->features[$event->getToGameState()]) || array_key_exists($event->getToGameState(), $this->features))
|
||||||
|
$theseFeatures = $this->features[$event->getToGameState()];
|
||||||
|
else
|
||||||
|
$theseFeatures = [];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** @var Feature[] $toEnable */
|
||||||
|
$toEnable = array_udiff($theseFeatures, $lastFeatures, array($this, 'comp'));
|
||||||
|
|
||||||
|
/** @var Feature[] $toDisable */
|
||||||
|
$toDisable = array_udiff($lastFeatures, $theseFeatures, array($this, 'comp'));
|
||||||
|
|
||||||
foreach ($toEnable as $feature) {
|
foreach ($toEnable as $feature) {
|
||||||
//$feature->
|
if (!$feature->isEnabled())
|
||||||
|
$feature->enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach ($toDisable as $feature) {
|
||||||
|
if ($feature->isEnabled())
|
||||||
|
$feature->disable();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onEnd(ArenaEndEvent $event)
|
public function onEnd(ArenaEndEvent $event)
|
||||||
{
|
{
|
||||||
if ($event->getArena() !== $this->arena)
|
if ($event->getArena() !== $this->arena)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($this->features));
|
||||||
|
|
||||||
|
foreach ($iterator as $feature) {
|
||||||
|
if ($feature->isEnabled())
|
||||||
|
$feature->disable();
|
||||||
|
}
|
||||||
|
|
||||||
HandlerList::unregisterAll($this);
|
HandlerList::unregisterAll($this);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
function comp($a,$b)
|
||||||
|
{
|
||||||
|
if ($a===$b)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return ($a>$b)?1:-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Created by PhpStorm.
|
* Created by PhpStorm.
|
||||||
* User: Exerosis
|
* User: TheMineBench
|
||||||
* Date: 7/1/2015
|
* Date: 7/1/2015
|
||||||
* Time: 10:20 PM
|
* Time: 10:20 PM
|
||||||
*/
|
*/
|
||||||
|
@ -17,12 +17,38 @@ use pocketmine\Server;
|
||||||
|
|
||||||
class NoBlockBreak implements Feature, Listener {
|
class NoBlockBreak implements Feature, Listener {
|
||||||
|
|
||||||
|
/** @var Arena */
|
||||||
private $arena;
|
private $arena;
|
||||||
|
|
||||||
|
/** @var int[] */
|
||||||
|
private $ids = [];
|
||||||
|
|
||||||
|
/** @var bool */
|
||||||
|
private $black;
|
||||||
|
|
||||||
|
/** @var bool */
|
||||||
private $enabled = false;
|
private $enabled = false;
|
||||||
|
|
||||||
|
/**
|
||||||
public function __construct(Arena $arena)
|
* @param Arena $arena
|
||||||
|
* @param int[] $ids
|
||||||
|
* @param bool $black
|
||||||
|
*/
|
||||||
|
public function __construct(Arena $arena, array $ids = null, $black = false)
|
||||||
{
|
{
|
||||||
|
if ($ids != null) {
|
||||||
|
$this->ids = array_flip($ids);
|
||||||
|
foreach ($this->ids as $key => $value)
|
||||||
|
{
|
||||||
|
print "Key:" . $key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print "\n" . "Black: " . (($black) ? 'true' : 'false') . "\n";
|
||||||
|
|
||||||
|
$this->black = $black;
|
||||||
|
|
||||||
|
print "\n" . "SetBlackList: " . (($this->black) ? 'true' : 'false') . "\n";
|
||||||
|
|
||||||
$this->arena = $arena;
|
$this->arena = $arena;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,20 +56,25 @@ class NoBlockBreak implements Feature, Listener {
|
||||||
{
|
{
|
||||||
if (!in_array($event->getPlayer(), $this->arena->getPlayers()))
|
if (!in_array($event->getPlayer(), $this->arena->getPlayers()))
|
||||||
return;
|
return;
|
||||||
$event->setCancelled(true);
|
|
||||||
|
if ($this->black == (isset($this->ids[$event->getBlock()->getId()]) || array_key_exists($event->getBlock()->getId(), $this->ids)))
|
||||||
|
$event->setCancelled();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function enable()
|
public function enable()
|
||||||
{
|
{
|
||||||
|
Server::getInstance()->broadcastMessage("Enabled!");
|
||||||
$this->enabled = true;
|
$this->enabled = true;
|
||||||
Server::getInstance()->getPluginManager()->registerEvents($this, $this->arena->getPlugin());
|
Server::getInstance()->getPluginManager()->registerEvents($this, $this->arena->getPlugin());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function disable()
|
public function disable()
|
||||||
{
|
{
|
||||||
|
Server::getInstance()->broadcastMessage("Disabled!");
|
||||||
$this->enabled = false;
|
$this->enabled = false;
|
||||||
HandlerList::unregisterAll($this);
|
HandlerList::unregisterAll($this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isEnabled()
|
public function isEnabled()
|
||||||
{
|
{
|
||||||
return $this->enabled;
|
return $this->enabled;
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: TheMineBench
|
||||||
|
* Date: 7/1/2015
|
||||||
|
* Time: 10:20 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace mineplex\plugin\bench\game\components\feature\features;
|
||||||
|
|
||||||
|
use mineplex\plugin\bench\arenas\Arena;
|
||||||
|
use mineplex\plugin\bench\game\components\feature\Feature;
|
||||||
|
use pocketmine\entity\Effect;
|
||||||
|
use pocketmine\event\block\BlockBreakEvent;
|
||||||
|
use pocketmine\event\HandlerList;
|
||||||
|
use pocketmine\event\Listener;
|
||||||
|
use pocketmine\Player;
|
||||||
|
use pocketmine\Server;
|
||||||
|
|
||||||
|
class NoMovement implements Feature, Listener {
|
||||||
|
|
||||||
|
private $arena;
|
||||||
|
private $enabled = false;
|
||||||
|
|
||||||
|
|
||||||
|
public function __construct(Arena $arena)
|
||||||
|
{
|
||||||
|
$this->arena = $arena;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onBlockBreak(BlockBreakEvent $event)
|
||||||
|
{
|
||||||
|
if (!in_array($event->getPlayer(), $this->arena->getPlayers()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$event->setCancelled(true);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public function enable()
|
||||||
|
{
|
||||||
|
$this->enabled = true;
|
||||||
|
Server::getInstance()->getPluginManager()->registerEvents($this, $this->arena->getPlugin());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function disable()
|
||||||
|
{
|
||||||
|
Server::getInstance()->broadcastMessage("Disabled!");
|
||||||
|
$this->enabled = false;
|
||||||
|
HandlerList::unregisterAll($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isEnabled()
|
||||||
|
{
|
||||||
|
return $this->enabled;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Created by PhpStorm.
|
* Created by PhpStorm.
|
||||||
* User: Exerosis
|
* User: TheMineBench
|
||||||
* Date: 7/1/2015
|
* Date: 7/1/2015
|
||||||
* Time: 10:33 AM
|
* Time: 10:33 AM
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -37,12 +37,16 @@ class GameStateComponent implements Listener {
|
||||||
$this->setGameState(GameState::LOBBY);
|
$this->setGameState(GameState::LOBBY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @priority LOW
|
||||||
|
* @param ArenaEndEvent $event
|
||||||
|
*/
|
||||||
public function onEnd(ArenaEndEvent $event)
|
public function onEnd(ArenaEndEvent $event)
|
||||||
{
|
{
|
||||||
if ($event->getArena() !== $this->arena)
|
if ($event->getArena() !== $this->arena)
|
||||||
return;
|
return;
|
||||||
HandlerList::unregisterAll($this);
|
HandlerList::unregisterAll($this);
|
||||||
$this->setGameState(GameState::RESTARTING);
|
$this->localSetState(GameState::RESTARTING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -64,13 +68,19 @@ class GameStateComponent implements Listener {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->localSetState($gameState);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function localSetState($gameState)
|
||||||
|
{
|
||||||
|
|
||||||
$event = new GameStateChangeEvent($this->arena, $this->gameState, $gameState);
|
$event = new GameStateChangeEvent($this->arena, $this->gameState, $gameState);
|
||||||
|
|
||||||
//Not sure if I should call the event before of after...
|
//Not sure if I should call the event before of after...
|
||||||
Server::getInstance()->getPluginManager()->callEvent($event);
|
Server::getInstance()->getPluginManager()->callEvent($event);
|
||||||
$this->gameState = $gameState;
|
$this->gameState = $gameState;
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getGameState()
|
public function getGameState()
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: Exerosis
|
||||||
|
* Date: 7/4/2015
|
||||||
|
* Time: 1:12 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace mineplex\plugin\bench\game\factory;
|
||||||
|
|
||||||
|
use mineplex\plugin\bench\game\Game;
|
||||||
|
|
||||||
|
interface GameFactory {
|
||||||
|
/**
|
||||||
|
* @return Game
|
||||||
|
*/
|
||||||
|
public function getGame();
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: Exerosis
|
||||||
|
* Date: 7/4/2015
|
||||||
|
* Time: 3:03 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace mineplex\plugin\bench\game\factory;
|
||||||
|
|
||||||
|
|
||||||
|
use mineplex\plugin\bench\game\games\sg\SurvivalGames;
|
||||||
|
|
||||||
|
class TestGameFactory implements GameFactory {
|
||||||
|
|
||||||
|
function getGame()
|
||||||
|
{
|
||||||
|
return new SurvivalGames();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Created by PhpStorm.
|
* Created by PhpStorm.
|
||||||
* User: Exerosis
|
* User: TheMineBench
|
||||||
* Date: 6/30/2015
|
* Date: 6/30/2015
|
||||||
* Time: 9:18 PM
|
* Time: 9:18 PM
|
||||||
*/
|
*/
|
||||||
|
@ -9,11 +9,14 @@ namespace mineplex\plugin\bench\game\games\pvp;
|
||||||
|
|
||||||
use mineplex\plugin\bench\game\components\countdown\GameStateCountdown;
|
use mineplex\plugin\bench\game\components\countdown\GameStateCountdown;
|
||||||
use mineplex\plugin\bench\game\components\feature\features\NoBlockBreak;
|
use mineplex\plugin\bench\game\components\feature\features\NoBlockBreak;
|
||||||
|
use mineplex\plugin\bench\game\components\feature\GameStateFeatureManager;
|
||||||
use mineplex\plugin\bench\game\components\gamestate\GameState;
|
use mineplex\plugin\bench\game\components\gamestate\GameState;
|
||||||
use mineplex\plugin\bench\game\components\gamestate\GameStateComponent;
|
use mineplex\plugin\bench\game\components\gamestate\GameStateComponent;
|
||||||
use pocketmine\event\Listener;
|
use pocketmine\event\Listener;
|
||||||
use mineplex\plugin\bench\game\Game;
|
use mineplex\plugin\bench\game\Game;
|
||||||
use mineplex\plugin\bench\arenas\Arena;
|
use mineplex\plugin\bench\arenas\Arena;
|
||||||
|
use mineplex\plugin\bench\game\components\feature\Feature;
|
||||||
|
use pocketmine\item\Item;
|
||||||
|
|
||||||
class Pvp implements Game, Listener {
|
class Pvp implements Game, Listener {
|
||||||
|
|
||||||
|
@ -21,16 +24,25 @@ class Pvp implements Game, Listener {
|
||||||
{
|
{
|
||||||
$gameStateComponent = new GameStateComponent($arena);
|
$gameStateComponent = new GameStateComponent($arena);
|
||||||
|
|
||||||
array(
|
$noBlockBreak = new NoBlockBreak($arena, array(Item::GRASS));
|
||||||
|
|
||||||
|
/** @var Feature[][] $features */
|
||||||
|
$features = array(
|
||||||
|
GameState::LOBBY => array($noBlockBreak),
|
||||||
|
GameState::PRE_GAME => array($noBlockBreak),
|
||||||
|
GameState::GAME => array($noBlockBreak),
|
||||||
|
GameState::POST_GAME => array($noBlockBreak)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
new GameStateFeatureManager($arena, $features);
|
||||||
|
|
||||||
new GameStateCountdown($arena, $gameStateComponent, 20, GameState::LOBBY, GameState::PRE_GAME);
|
new GameStateCountdown($arena, $gameStateComponent, 20, GameState::LOBBY, GameState::PRE_GAME);
|
||||||
|
|
||||||
//new GameStateCountdown($arena, $gameStateComponent, 10, GameState::PRE_GAME, GameState::GAME);
|
new GameStateCountdown($arena, $gameStateComponent, 10, GameState::PRE_GAME, GameState::GAME);
|
||||||
|
|
||||||
//new GameStateCountdown($arena, $gameStateComponent, 30, GameState::GAME, GameState::POST_GAME);
|
new GameStateCountdown($arena, $gameStateComponent, 30, GameState::GAME, GameState::POST_GAME);
|
||||||
|
|
||||||
//new GameStateCountdown($arena, $gameStateComponent, 10, GameState::POST_GAME, GameState::RESTARTING);
|
new GameStateCountdown($arena, $gameStateComponent, 10, GameState::POST_GAME, GameState::RESTARTING);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: Exerosis
|
||||||
|
* Date: 7/4/2015
|
||||||
|
* Time: 3:09 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace mineplex\plugin\bench\game\games\sg;
|
||||||
|
|
||||||
|
use mineplex\plugin\bench\game\components\countdown\GameStateCountdown;
|
||||||
|
use mineplex\plugin\bench\game\components\feature\features\NoBlockBreak;
|
||||||
|
use mineplex\plugin\bench\game\components\feature\GameStateFeatureManager;
|
||||||
|
use mineplex\plugin\bench\game\components\gamestate\GameState;
|
||||||
|
use mineplex\plugin\bench\game\components\gamestate\GameStateComponent;
|
||||||
|
use mineplex\plugin\bench\game\Game;
|
||||||
|
use mineplex\plugin\bench\arenas\Arena;
|
||||||
|
use mineplex\plugin\bench\game\components\feature\Feature;
|
||||||
|
use pocketmine\item\Item;
|
||||||
|
|
||||||
|
class SurvivalGames implements Game {
|
||||||
|
|
||||||
|
function start(Arena $arena)
|
||||||
|
{
|
||||||
|
$gameStateComponent = new GameStateComponent($arena);
|
||||||
|
|
||||||
|
$noBlockBreak = new NoBlockBreak($arena, array(Item::GRASS));
|
||||||
|
|
||||||
|
/** @var Feature[][] $features */
|
||||||
|
$features = array(
|
||||||
|
GameState::LOBBY => array($noBlockBreak),
|
||||||
|
GameState::PRE_GAME => array($noBlockBreak),
|
||||||
|
GameState::POST_GAME => array($noBlockBreak)
|
||||||
|
);
|
||||||
|
|
||||||
|
new GameStateFeatureManager($arena, $features);
|
||||||
|
|
||||||
|
new GameStateCountdown($arena, $gameStateComponent, 20, GameState::LOBBY, GameState::PRE_GAME);
|
||||||
|
|
||||||
|
new GameStateCountdown($arena, $gameStateComponent, 10, GameState::PRE_GAME, GameState::GAME);
|
||||||
|
|
||||||
|
new GameStateCountdown($arena, $gameStateComponent, 30, GameState::GAME, GameState::POST_GAME);
|
||||||
|
|
||||||
|
new GameStateCountdown($arena, $gameStateComponent, 10, GameState::POST_GAME, GameState::RESTARTING);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue