From 190e58c37ea8eb6cfe36332c41d5a2e24e490339 Mon Sep 17 00:00:00 2001 From: Cheese Date: Wed, 1 Jul 2015 12:58:54 +1000 Subject: [PATCH 01/52] bridges update --- .../game/arcade/game/games/bridge/Bridge.java | 154 ++++++++++++++++-- 1 file changed, 140 insertions(+), 14 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java index 7402faf4b..4393f8129 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java @@ -43,6 +43,8 @@ import org.bukkit.util.Vector; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.MapUtil; +import mineplex.core.common.util.NautHashMap; +import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilGear; @@ -95,8 +97,12 @@ public class Bridge extends TeamGame implements OreObsfucation private ArrayList _lavaSource = new ArrayList(); //Lilly Pad Bridge - private ArrayList _lillyPads = new ArrayList(); - + private NautHashMap _lillyPads = new NautHashMap(); + + //Mushrooms + private NautHashMap _mushroomStem = new NautHashMap(); + private NautHashMap _mushroomTop = new NautHashMap(); + //Ice private ArrayList _iceBridge = new ArrayList(); @@ -234,11 +240,16 @@ public class Bridge extends TeamGame implements OreObsfucation } } - @EventHandler(priority = EventPriority.HIGH) + @EventHandler(priority = EventPriority.MONITOR) public void GameStateChange(GameStateChangeEvent event) { if (event.GetState() != GameState.Live) return; + + if (!WorldData.GetCustomLocs("WATER_DAMAGE").isEmpty()) + { + WorldWaterDamage = 4; + } if (WorldWaterDamage > 0) { @@ -259,7 +270,8 @@ public class Bridge extends TeamGame implements OreObsfucation ParseWoodBridge(); ParseIceBridge(); ParseLillyPad(); - + ParseMushrooms(); + ParseChests(); ParseOre(WorldData.GetCustomLocs("73")); // Red @@ -650,12 +662,29 @@ public class Bridge extends TeamGame implements OreObsfucation private void ParseIceBridge() { - _iceBridge = WorldData.GetCustomLocs("LIGHT_BLUE"); + _iceBridge = WorldData.GetDataLocs("LIGHT_BLUE"); } + private void ParseMushrooms() + { + for (Location loc : WorldData.GetCustomLocs("21")) + { + _mushroomStem.put(loc, 0L); + loc.getBlock().setType(Material.AIR); + } + + for (Location loc : WorldData.GetDataLocs("PURPLE")) + { + _mushroomTop.put(loc, 0L); + } + } + private void ParseLillyPad() { - _lillyPads = WorldData.GetDataLocs("LIME"); + for (Location loc : WorldData.GetDataLocs("LIME")) + { + _lillyPads.put(loc, 0L); + } } @EventHandler @@ -690,6 +719,7 @@ public class Bridge extends TeamGame implements OreObsfucation BuildLava(); BuildIce(); BuildLillyPad(); + buildMushroom(); } private void BuildLava() @@ -729,7 +759,10 @@ public class Bridge extends TeamGame implements OreObsfucation if (_lillyPads != null && !_lillyPads.isEmpty()) { // Random Block - Location loc = _lillyPads.get(UtilMath.r(_lillyPads.size())); + Location loc = UtilAlg.Random(_lillyPads.keySet()); + + if (!UtilTime.elapsed(_lillyPads.get(loc), 8000)) + continue; if (!loc.getBlock().getRelative(BlockFace.DOWN).isLiquid()) continue; @@ -743,19 +776,109 @@ public class Bridge extends TeamGame implements OreObsfucation } } + @EventHandler + public void breakLillyPad(BlockBreakEvent event) + { + if (event.getBlock().getType() != Material.WATER_LILY) + return; + + _lillyPads.put(event.getBlock().getLocation(), System.currentTimeMillis() + (long)(Math.random() * 12000)); + } + + private void buildMushroom() + { + if (_mushroomStem != null && !_mushroomStem.isEmpty()) + { + for (int i=0 ; i<4 && !_mushroomStem.isEmpty() ; i++) + { + double lowestY = 0; + Location lowestLoc = null; + + for (Location loc : _mushroomStem.keySet()) + { + if (!UtilTime.elapsed(_mushroomStem.get(loc), 6000)) + continue; + + if (lowestLoc == null || loc.getY() < lowestY) + { + lowestY = loc.getY(); + lowestLoc = loc; + } + } + + if (lowestLoc == null) + continue; + + _mushroomStem.remove(lowestLoc); + + MapUtil.QuickChangeBlockAt(lowestLoc, 100, (byte)15); + } + } + + else if (_mushroomTop != null && !_mushroomTop.isEmpty()) + { + int attempts = 0; + int done = 0; + while (done < 4 && attempts < 400) + { + attempts++; + + // Random Block + Location loc = UtilAlg.Random(_mushroomTop.keySet()); + + if (!UtilTime.elapsed(_mushroomTop.get(loc), 6000)) + continue; + + Block block = loc.getBlock(); + + if (block.getRelative(BlockFace.DOWN).getType() == Material.AIR && + block.getRelative(BlockFace.NORTH).getType() == Material.AIR && + block.getRelative(BlockFace.EAST).getType() == Material.AIR && + block.getRelative(BlockFace.SOUTH).getType() == Material.AIR && + block.getRelative(BlockFace.WEST).getType() == Material.AIR) + continue; + + _mushroomTop.remove(loc); + + MapUtil.QuickChangeBlockAt(block.getLocation(), 99, (byte)14); + + // Sound + loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 99); + + done++; + } + } + } + + @EventHandler + public void breakMushroom(BlockBreakEvent event) + { + if (event.getBlock().getTypeId() == 100 && + WorldData.GetCustomLocs("21").contains(event.getBlock().getLocation().add(0.5, 0, 0.5))) + { + _mushroomStem.put(event.getBlock().getLocation(), System.currentTimeMillis() + (long)(Math.random() * 12000)); + } + + if (event.getBlock().getTypeId() == 99 && + WorldData.GetDataLocs("PURPLE").contains(event.getBlock().getLocation().add(0.5, 0, 0.5))) + { + _mushroomTop.put(event.getBlock().getLocation(), System.currentTimeMillis() + (long)(Math.random() * 12000)); + } + } + private void BuildIce() { - if (UtilTime.elapsed(this.GetStateTime(), _bridgeTime + 120000)) + if (_iceBridge == null || _iceBridge.isEmpty() || UtilTime.elapsed(this.GetStateTime(), _bridgeTime + 120000)) { WorldData.World.setStorm(false); return; } WorldData.World.setStorm(true); - + int attempts = 0; int done = 0; - while (done < 2 && attempts < 500 && _iceBridge != null && !_iceBridge.isEmpty()) + while (done < 4 && attempts < 500) { attempts++; @@ -776,9 +899,9 @@ public class Bridge extends TeamGame implements OreObsfucation _iceBridge.remove(loc); if (Math.random() > 0.25) - MapUtil.QuickChangeBlockAt(loc, Material.PACKED_ICE); + MapUtil.QuickChangeBlockAt(block.getLocation(), Material.PACKED_ICE); else - MapUtil.QuickChangeBlockAt(loc, Material.ICE); + MapUtil.QuickChangeBlockAt(block.getLocation(), Material.ICE); // Sound loc.getWorld().playEffect(loc, Effect.STEP_SOUND, Material.ICE); @@ -1242,7 +1365,7 @@ public class Bridge extends TeamGame implements OreObsfucation for (GameTeam team : this.GetTeamList()) { //Display Individual Players - if (this.GetPlayers(true).size() < 10) + if (this.GetPlayers(true).size() < 8) { if (!team.IsTeamAlive()) continue; @@ -1662,9 +1785,12 @@ public class Bridge extends TeamGame implements OreObsfucation } @EventHandler - public void toggleOre(PlayerCommandPreprocessEvent event) + public void debug(PlayerCommandPreprocessEvent event) { if (event.getPlayer().isOp() && event.getMessage().contains("/oretoggle")) _ore.ToggleVisibility(); + + if (event.getPlayer().isOp() && event.getMessage().contains("/bridge")) + _bridgeTime = 30000; } } From 0650b7337450dc8d82e5fc2319f083dca2bfd502 Mon Sep 17 00:00:00 2001 From: Cheese Date: Wed, 1 Jul 2015 14:16:56 +1000 Subject: [PATCH 02/52] more bridge tweaks --- .gitignore | 5 ++++ .../game/arcade/game/games/bridge/Bridge.java | 23 +++++++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index e7c01c354..626bd858f 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,8 @@ Debug /Plugins/Cube/plugin.yml /Plugins/Cube/src/mastaG/Cube/Cube.java /Plugins/Libraries/spigot_server.jar +xOlibro +zBench +zMyst +zSotanna +zSotanna2 diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java index 4393f8129..03dba1f78 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java @@ -102,6 +102,7 @@ public class Bridge extends TeamGame implements OreObsfucation //Mushrooms private NautHashMap _mushroomStem = new NautHashMap(); private NautHashMap _mushroomTop = new NautHashMap(); + private boolean _stemsGrown = false; //Ice private ArrayList _iceBridge = new ArrayList(); @@ -755,7 +756,7 @@ public class Bridge extends TeamGame implements OreObsfucation private void BuildLillyPad() { - for (int i = 0; i < 2; i++) + for (int i = 0; i < 3; i++) if (_lillyPads != null && !_lillyPads.isEmpty()) { // Random Block @@ -814,8 +815,12 @@ public class Bridge extends TeamGame implements OreObsfucation MapUtil.QuickChangeBlockAt(lowestLoc, 100, (byte)15); } } + else + { + _stemsGrown = true; + } - else if (_mushroomTop != null && !_mushroomTop.isEmpty()) + if (_stemsGrown && _mushroomTop != null && !_mushroomTop.isEmpty()) { int attempts = 0; int done = 0; @@ -841,9 +846,6 @@ public class Bridge extends TeamGame implements OreObsfucation _mushroomTop.remove(loc); MapUtil.QuickChangeBlockAt(block.getLocation(), 99, (byte)14); - - // Sound - loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 99); done++; } @@ -853,6 +855,12 @@ public class Bridge extends TeamGame implements OreObsfucation @EventHandler public void breakMushroom(BlockBreakEvent event) { + if (event.isCancelled()) + return; + + event.setCancelled(true); + event.getBlock().setType(Material.AIR); + if (event.getBlock().getTypeId() == 100 && WorldData.GetCustomLocs("21").contains(event.getBlock().getLocation().add(0.5, 0, 0.5))) { @@ -878,7 +886,7 @@ public class Bridge extends TeamGame implements OreObsfucation int attempts = 0; int done = 0; - while (done < 4 && attempts < 500) + while (done < 5 && attempts < 400) { attempts++; @@ -903,9 +911,6 @@ public class Bridge extends TeamGame implements OreObsfucation else MapUtil.QuickChangeBlockAt(block.getLocation(), Material.ICE); - // Sound - loc.getWorld().playEffect(loc, Effect.STEP_SOUND, Material.ICE); - done++; } } From dd9fc8e7c664ed0c721068c26ee041854ab57b13 Mon Sep 17 00:00:00 2001 From: Cheese Date: Wed, 1 Jul 2015 15:14:46 +1000 Subject: [PATCH 03/52] bridge speed increase --- .../src/nautilus/game/arcade/game/games/bridge/Bridge.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java index 03dba1f78..0645f5e7a 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java @@ -824,7 +824,7 @@ public class Bridge extends TeamGame implements OreObsfucation { int attempts = 0; int done = 0; - while (done < 4 && attempts < 400) + while (done < 6 && attempts < 400) { attempts++; From e3b0ee9ae34993c7a726fe14c7ed597f22182006 Mon Sep 17 00:00:00 2001 From: Aaron Brock Date: Wed, 1 Jul 2015 02:02:51 -0400 Subject: [PATCH 04/52] Switched it so it enables my game Signed-off-by: Aaron Brock --- .../Mineplex/src/mineplex/plugin/Main.php | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php index ae02ebc33..e9d7f1cd4 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php @@ -2,28 +2,29 @@ namespace mineplex\plugin; -use mineplex\plugin\core\updater\UpdateType; -use mineplex\plugin\tasks\TickTask; -use mineplex\plugin\events\TickEvent; -use mineplex\plugin\core\updater\Updater; -use mineplex\plugin\core\updater\UpdateEvent; -use mineplex\plugin\core\updater\UpdateType as UpdaterType; -use mineplex\plugin\util\UtilString; -use mineplex\plugin\packets\StrangePacket; -use pocketmine\plugin\PluginBase; +use mineplex\plugin\bench\arenas\SingleGameArena; +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\player\PlayerJoinEvent; use pocketmine\event\player\PlayerCommandPreprocessEvent; +use pocketmine\event\player\PlayerJoinEvent; +use pocketmine\plugin\PluginBase; +use pocketmine\Server; class Main extends PluginBase implements Listener { public function onEnable() { - $this->getServer()->getScheduler()->scheduleRepeatingTask(new TickTask($this), 1); + new SingleGameArena($this, new Pvp()); - $this->getServer()->getPluginManager()->registerEvents($this, $this); - new Updater($this); + + //$this->getServer()->getScheduler()->scheduleRepeatingTask(new TickTask($this), 1); + + //$this->getServer()->getPluginManager()->registerEvents($this, $this); + //new Updater($this); } public function onDisable() @@ -31,6 +32,15 @@ class Main extends PluginBase implements Listener } + public function joinMessage(PlayerJoinEvent $event) + { + $name = $event->getPlayer()->getName(); + + $player = Server::getInstance()->getPlayer($name); + + $event->setJoinMessage($player->getName()); + } + public function onPlayerJoin(PlayerJoinEvent $event) { $event->getPlayer()->sendMessage("Welcome to the server " . $event->getPlayer()->getName() . "!"); From 7d55221515198d6f5a41ca4afcbbcda235e2fb10 Mon Sep 17 00:00:00 2001 From: Aaron Brock Date: Wed, 1 Jul 2015 02:03:28 -0400 Subject: [PATCH 05/52] Some game stuff I don't know why this no work! Signed-off-by: Aaron Brock --- .../mineplex/plugin/bench/arenas/Arena.php | 29 +++++ .../plugin/bench/arenas/ArenaEvent.php | 25 ++++ .../plugin/bench/arenas/SingleGameArena.php | 110 ++++++++++++++++++ .../bench/arenas/events/ArenaCanJoinEvent.php | 30 +++++ .../bench/arenas/events/ArenaEndEvent.php | 21 ++++ .../bench/arenas/events/ArenaJoinEvent.php | 31 +++++ .../bench/arenas/events/ArenaQuitEvent.php | 30 +++++ .../src/mineplex/plugin/bench/game/Game.php | 14 +++ .../plugin/bench/game/games/pvp/Pvp.php | 21 ++++ .../bench/game/games/pvp/PvpComponent.php | 89 ++++++++++++++ 10 files changed, 400 insertions(+) create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/Arena.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/ArenaEvent.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaCanJoinEvent.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaEndEvent.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaJoinEvent.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaQuitEvent.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/Game.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/pvp/Pvp.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/pvp/PvpComponent.php diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/Arena.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/Arena.php new file mode 100644 index 000000000..dc266e03e --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/Arena.php @@ -0,0 +1,29 @@ +arena = $arena; + } + + public function getArena() + { + return $this->arena; + } +} \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php new file mode 100644 index 000000000..f6c7fcf2e --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php @@ -0,0 +1,110 @@ +getPluginManager()->registerEvents($this, $plugin); + $this->game = $game; + $this->plugin = $plugin; + $this->getCurrentGame()->start($this); + } + + 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 onJoin(PlayerJoinEvent $event) + { + if ($this->canJoin($event->getPlayer())) + { + $this->addPlayer($event->getPlayer()); + } + } + + public function onQuit(PlayerQuitEvent $event) + { + $this->removePlayer($event->getPlayer()); + } + + + + + public function getPlayers() + { + return $this->players; + } + + public function getCurrentGame() + { + return $this->game; + } + + public function getPlugin() + { + return $this->plugin; + } + + public function endGame() + { + Server::getInstance()->getPluginManager()->callEvent(new ArenaEndEvent($this)); + Server::getInstance()->broadcastMessage("MooCount: ".(string)count($this->players)); + + foreach ($this->players as $player) + { + Server::getInstance()->broadcastMessage((string)$player->getName()); + $player->kick('Game Over...'); + } + } + +} \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaCanJoinEvent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaCanJoinEvent.php new file mode 100644 index 000000000..371365268 --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaCanJoinEvent.php @@ -0,0 +1,30 @@ +player = $player; + } + + public function getPlayer() + { + return $this->player; + } +} \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaEndEvent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaEndEvent.php new file mode 100644 index 000000000..22c1b48a7 --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaEndEvent.php @@ -0,0 +1,21 @@ +player = $player; + } + + public function getPlayer() + { + return $this->player; + } +} \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaQuitEvent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaQuitEvent.php new file mode 100644 index 000000000..76efec5dd --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaQuitEvent.php @@ -0,0 +1,30 @@ +player = $player; + } + + public function getPlayer() + { + return $this->player; + } +} \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/Game.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/Game.php new file mode 100644 index 000000000..e05da5701 --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/Game.php @@ -0,0 +1,14 @@ +getPluginManager()->registerEvents($this, $arena->getPlugin()); + $this->arena = $arena; + } + + public function onJoin(ArenaJoinEvent $event) + { + + if ($event->getArena() !== $this->arena) + return; + $event->getPlayer()->sendMessage("Welcome to the arena"); + + + $players = $this->arena->getPlayers(); + + array_push($players, $event->getPlayer()); + Server::getInstance()->broadcastMessage("JoinCount: ".(string)count($players)); + if (count($this->arena->getPlayers()) >= 2) + { + foreach ($this->arena->getPlayers() as $player) + { + $player->sendPopup("Game started! Try to kill everyone else."); + } + } + } + + public function onDeath(PlayerDeathEvent $event) + { + if (in_array($event->getEntity(), $this->arena->getPlayers())) + $event->getEntity()->kick('You done got yourself keeled!'); + + } + + public function onQuit(ArenaQuitEvent $event) + { + if ($event->getArena() !== $this->arena) + return; + + Server::getInstance()->broadcastMessage(" has quit."); + $this->checkEnd(); + } + + public function onEnd(ArenaEndEvent $event) + { + if ($event->getArena() !== $this->arena) + return; + Server::getInstance()->broadcastMessage("Unregistered!"); + HandlerList::unregisterAll($this); + } + + public function checkEnd() + { + Server::getInstance()->broadcastMessage("Count: ".(string)(count($this->arena->getPlayers()) <= 1) ? 'true' : 'false'); + + if (count($this->arena->getPlayers()) <= 1) + { + Server::getInstance()->broadcastMessage('game ending...'); + $this->arena->endGame(); + } + } + + +} \ No newline at end of file From 88241fa4d50e28f17e0ca2e1701070dd61865695 Mon Sep 17 00:00:00 2001 From: Aaron Brock Date: Wed, 1 Jul 2015 18:36:05 -0400 Subject: [PATCH 06/52] Added some stuff and things Signed-off-by: Aaron Brock --- .../plugin/bench/arenas/SingleGameArena.php | 2 + .../bench/arenas/events/ArenaStartEvent.php | 20 +++++ .../countdown/GameStateCountdown.php | 52 ++++++++++++ .../game/components/gamestate/GameState.php | 21 +++++ .../gamestate/GameStateComponent.php | 84 +++++++++++++++++++ .../bench/game/components/gamestate/Test.php | 15 ++++ .../gamestate/events/GameStateChangeEvent.php | 36 ++++++++ 7 files changed, 230 insertions(+) create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaStartEvent.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameState.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameStateComponent.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/Test.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/events/GameStateChangeEvent.php diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php index f6c7fcf2e..294f0a97d 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php @@ -18,6 +18,7 @@ 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 SingleGameArena implements Arena, Listener { //I really have no idea if there is a better way to store players... but this is what I'm using for now. @@ -35,6 +36,7 @@ class SingleGameArena implements Arena, Listener { $this->game = $game; $this->plugin = $plugin; $this->getCurrentGame()->start($this); + Server::getInstance()->getPluginManager()->callEvent(new ArenaStartEvent($this)); } public function canJoin(Player $player) diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaStartEvent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaStartEvent.php new file mode 100644 index 000000000..2fd03a23b --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaStartEvent.php @@ -0,0 +1,20 @@ +getPlugin()); + $this->gameStateComponent = $gameStateComponent; + + $this->startCount = $count; + $this->count = $count; + + $this + } + + public function onGameStateChange(GameStateChangeEvent $event) + { + if ($event->getArena() !== $this->arena) + return; + + + } + + + public function onRun($currentTick) + { + $this->plugin->getServer()->getPluginManager()->callEvent(new TickEvent($currentTick)); + } +} \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameState.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameState.php new file mode 100644 index 000000000..d72fbcbc8 --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameState.php @@ -0,0 +1,21 @@ +arena = $arena; + $this->gameState = GameState::RESTARTING; + Server::getInstance()->getPluginManager()->registerEvents($this, $arena->getPlugin()); + } + + public function onStart(ArenaStartEvent $event) + { + if ($event->getArena() !== $this->arena) + return; + $this->setGameState(GameState::LOBBY); + } + + public function onEnd(ArenaEndEvent $event) + { + if ($event->getArena() !== $this->arena) + return; + HandlerList::unregisterAll($this); + $this->setGameState(GameState::RESTARTING); + } + + + public function setGameState($gameState) + { + + if ($gameState < GameState::LOBBY) + $gameState = GameState::LOBBY; + + if ($gameState > GameState::RESTARTING) + $gameState = GameState::RESTARTING; + + if ($gameState == $this->gameState) + return false; + + if ($gameState == GameState::RESTARTING) + { + $this->arena->endGame(); + return true; + } + + $event = new GameStateChangeEvent($this->arena, $this->gameState, $gameState); + + //Not sure if I should call the event before of after... + Server::getInstance()->getPluginManager()->callEvent($event); + $this->gameState = $gameState; + + return true; + } + + public function getGameState() + { + return $this->gameState; + } + +} + +//$john = new GameStateComponent(); +//echo $john->getGameState(); diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/Test.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/Test.php new file mode 100644 index 000000000..eb777d4a3 --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/Test.php @@ -0,0 +1,15 @@ +getGameState(); \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/events/GameStateChangeEvent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/events/GameStateChangeEvent.php new file mode 100644 index 000000000..02e9be208 --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/events/GameStateChangeEvent.php @@ -0,0 +1,36 @@ +fromGameState = $fromGameState; + $this->toGameState = $toGameState; + } + + public function getFromGameState() + { + return $this->fromGameState; + } + + public function getToGameState() + { + return $this->toGameState; + } + +} \ No newline at end of file From 0100ca1b8c6bf07e790afc69ee2f4e56c92271e4 Mon Sep 17 00:00:00 2001 From: Cheese Date: Thu, 2 Jul 2015 09:41:33 +1000 Subject: [PATCH 07/52] fixed a derp bug --- .../nautilus/game/arcade/game/games/bridge/Bridge.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java index 0645f5e7a..8a65c4f83 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java @@ -858,18 +858,22 @@ public class Bridge extends TeamGame implements OreObsfucation if (event.isCancelled()) return; - event.setCancelled(true); - event.getBlock().setType(Material.AIR); if (event.getBlock().getTypeId() == 100 && WorldData.GetCustomLocs("21").contains(event.getBlock().getLocation().add(0.5, 0, 0.5))) { + event.setCancelled(true); + event.getBlock().setType(Material.AIR); + _mushroomStem.put(event.getBlock().getLocation(), System.currentTimeMillis() + (long)(Math.random() * 12000)); } if (event.getBlock().getTypeId() == 99 && WorldData.GetDataLocs("PURPLE").contains(event.getBlock().getLocation().add(0.5, 0, 0.5))) { + event.setCancelled(true); + event.getBlock().setType(Material.AIR); + _mushroomTop.put(event.getBlock().getLocation(), System.currentTimeMillis() + (long)(Math.random() * 12000)); } } From 1e26ebe0bd148dcbb3087aef9924b6072bda8cbe Mon Sep 17 00:00:00 2001 From: Cheese Date: Thu, 2 Jul 2015 10:09:39 +1000 Subject: [PATCH 08/52] disabled ice forming --- .../src/mineplex/mapparser/MapParser.java | 7 +++++++ .../game/arcade/game/games/bridge/Bridge.java | 11 +++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Plugins/Mineplex.MapParser/src/mineplex/mapparser/MapParser.java b/Plugins/Mineplex.MapParser/src/mineplex/mapparser/MapParser.java index 08915a045..9d1efd727 100644 --- a/Plugins/Mineplex.MapParser/src/mineplex/mapparser/MapParser.java +++ b/Plugins/Mineplex.MapParser/src/mineplex/mapparser/MapParser.java @@ -24,6 +24,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockBurnEvent; import org.bukkit.event.block.BlockFadeEvent; +import org.bukkit.event.block.BlockFormEvent; import org.bukkit.event.block.BlockSpreadEvent; import org.bukkit.event.block.LeavesDecayEvent; import org.bukkit.event.entity.EntitySpawnEvent; @@ -277,6 +278,12 @@ public class MapParser extends JavaPlugin implements Listener event.setCancelled(true); } + @EventHandler + public void DisableIceForm(BlockFormEvent event) + { + event.setCancelled(true); + } + @EventHandler public void Updates(PlayerMoveEvent event) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java index 8a65c4f83..52f199735 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java @@ -40,6 +40,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.util.Vector; +import mineplex.core.common.Rank; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.MapUtil; @@ -1796,10 +1797,16 @@ public class Bridge extends TeamGame implements OreObsfucation @EventHandler public void debug(PlayerCommandPreprocessEvent event) { - if (event.getPlayer().isOp() && event.getMessage().contains("/oretoggle")) + if (Manager.GetClients().hasRank(event.getPlayer(), Rank.ADMIN) && event.getMessage().contains("/oretoggle")) _ore.ToggleVisibility(); - if (event.getPlayer().isOp() && event.getMessage().contains("/bridge")) + if (Manager.GetClients().hasRank(event.getPlayer(), Rank.ADMIN) && event.getMessage().contains("/bridge")) _bridgeTime = 30000; } + + @EventHandler + public void disableIceForm(BlockFormEvent event) + { + event.setCancelled(true); + } } From a240181650620174209f59d7c6e26750c7bb36a7 Mon Sep 17 00:00:00 2001 From: Aaron Brock Date: Wed, 1 Jul 2015 20:11:07 -0400 Subject: [PATCH 09/52] More stuff... Signed-off-by: Aaron Brock --- .../countdown/GameStateCountdown.php | 56 +++++++++++++++++-- .../gamestate/GameStateComponent.php | 2 +- .../gamestate/events/GameStateChangeEvent.php | 4 +- .../plugin/bench/game/games/pvp/Pvp.php | 13 ++++- 4 files changed, 66 insertions(+), 9 deletions(-) diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php index 01309864c..1a97ca91c 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php @@ -10,30 +10,38 @@ namespace mineplex\plugin\bench\game\components\countdown; use mineplex\plugin\bench\arenas\Arena; -use mineplex\plugin\bench\arenas\events\GameStateChangeEvent; +use mineplex\plugin\bench\arenas\events\ArenaEndEvent; use mineplex\plugin\bench\game\components\gamestate\GameStateComponent; +use pocketmine\event\HandlerList; use pocketmine\event\Listener; use pocketmine\scheduler\PluginTask; - +use pocketmine\Server; +use mineplex\plugin\bench\game\components\gamestate\events\GameStateChangeEvent; class GameStateCountdown extends PluginTask implements Listener { private $startCount; private $count; private $gameStateComponent; + private $arena; + private $startGameState; - private $endGameState; + private $setGameState; - public function __construct(Arena $arena, GameStateComponent $gameStateComponent, $count, $startGameState, $endGameState) + public function __construct(Arena $arena, GameStateComponent $gameStateComponent, $count, $startGameState, $setGameState) { parent::__construct($arena->getPlugin()); + $this->arena = $arena; $this->gameStateComponent = $gameStateComponent; $this->startCount = $count; $this->count = $count; - $this + $this->startGameState = $startGameState; + $this->setGameState = $setGameState; + + Server::getInstance()->getPluginManager()->registerEvents($this, $arena->getPlugin()); } public function onGameStateChange(GameStateChangeEvent $event) @@ -41,12 +49,48 @@ class GameStateCountdown extends PluginTask implements Listener { if ($event->getArena() !== $this->arena) return; + Server::getInstance()->broadcastMessage("ToGameState:".(string)$event->getToGameState()); + Server::getInstance()->broadcastMessage("StartGameState: $this->startGameState"); + if ($event->getToGameState() == $this->startGameState) + { + Server::getInstance()->getScheduler()->scheduleRepeatingTask($this, 20); + } + else + { + $this->count = $this->startCount; + + Server::getInstance()->getScheduler()->cancelTask($this->getTaskId()); + } } + public function onEnd(ArenaEndEvent $event) + { + if ($event->getArena() !== $this->arena) + return; + HandlerList::unregisterAll($this); + } + public function onRun($currentTick) { - $this->plugin->getServer()->getPluginManager()->callEvent(new TickEvent($currentTick)); + print "Count: $this->count"."\n"; + + $this->popup(); + + $this->count--; + + if ($this->count <= 0) + { + $this->gameStateComponent->setGameState($this->setGameState); + } + + } + public function popup() + { + foreach ($this->arena->getPlayers() as $player) + { + $player->sendPopup("Countdown: $this->count"); + } } } \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameStateComponent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameStateComponent.php index ace2183e7..029ac3b90 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameStateComponent.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameStateComponent.php @@ -10,7 +10,7 @@ namespace mineplex\plugin\bench\game\components\gamestate; use mineplex\plugin\bench\arenas\events\ArenaEndEvent; use mineplex\plugin\bench\arenas\events\ArenaStartEvent; -use mineplex\plugin\bench\arenas\events\GameStateChangeEvent; +use mineplex\plugin\bench\game\components\gamestate\events\GameStateChangeEvent; use mineplex\plugin\bench\arenas\Arena; use pocketmine\event\HandlerList; use pocketmine\event\Listener; diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/events/GameStateChangeEvent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/events/GameStateChangeEvent.php index 02e9be208..4865dd084 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/events/GameStateChangeEvent.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/events/GameStateChangeEvent.php @@ -6,13 +6,15 @@ * Time: 10:49 AM */ -namespace mineplex\plugin\bench\arenas\events; +namespace mineplex\plugin\bench\game\components\gamestate\events; use mineplex\plugin\bench\arenas\ArenaEvent; use mineplex\plugin\bench\arenas\Arena; class GameStateChangeEvent extends ArenaEvent { + public static $handlerList = null; + private $fromGameState; private $toGameState; diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/pvp/Pvp.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/pvp/Pvp.php index de41fc265..9312d955e 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/pvp/Pvp.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/pvp/Pvp.php @@ -7,6 +7,9 @@ */ namespace mineplex\plugin\bench\game\games\pvp; +use mineplex\plugin\bench\game\components\countdown\GameStateCountdown; +use mineplex\plugin\bench\game\components\gamestate\GameState; +use mineplex\plugin\bench\game\components\gamestate\GameStateComponent; use pocketmine\event\Listener; use mineplex\plugin\bench\game\Game; use mineplex\plugin\bench\arenas\Arena; @@ -15,7 +18,15 @@ class Pvp implements Game, Listener { public function start(Arena $arena) { - new PvpComponent($arena); + $gameStateComponent = new GameStateComponent($arena); + + 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); } } \ No newline at end of file From 0920c270407a8407846b114529af5eb3a6bffe67 Mon Sep 17 00:00:00 2001 From: Aaron Brock Date: Wed, 1 Jul 2015 21:59:38 -0400 Subject: [PATCH 10/52] Stuff Signed-off-by: Aaron Brock --- .../game/components/countdown/GameStateCountdown.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php index 1a97ca91c..472c362e9 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php @@ -24,7 +24,7 @@ class GameStateCountdown extends PluginTask implements Listener { private $count; private $gameStateComponent; private $arena; - + private $task; private $startGameState; private $setGameState; @@ -54,13 +54,15 @@ class GameStateCountdown extends PluginTask implements Listener { if ($event->getToGameState() == $this->startGameState) { - Server::getInstance()->getScheduler()->scheduleRepeatingTask($this, 20); + + $this->task = Server::getInstance()->getScheduler()->scheduleRepeatingTask($this, 20); + } else { $this->count = $this->startCount; + $this->task->cancel(); - Server::getInstance()->getScheduler()->cancelTask($this->getTaskId()); } } From aa072d7f5897cdc83aa78e713d540a05d3fd898d Mon Sep 17 00:00:00 2001 From: Cheese Date: Thu, 2 Jul 2015 12:05:48 +1000 Subject: [PATCH 11/52] improved updateevent --- .../plugin/core/updater/UpdateEvent.php | 17 ++++-- .../plugin/core/updater/UpdateType.php | 32 ++++++------ .../mineplex/plugin/core/updater/Updater.php | 52 +++++++++++-------- .../src/mineplex/plugin/events/TickEvent.php | 22 -------- .../src/mineplex/plugin/tasks/TickTask.php | 23 -------- 5 files changed, 57 insertions(+), 89 deletions(-) delete mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/events/TickEvent.php delete mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/tasks/TickTask.php diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateEvent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateEvent.php index 5d9b4b5c1..d8d552dc4 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateEvent.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateEvent.php @@ -14,15 +14,22 @@ class UpdateEvent extends Event { public static $handlerList = null; - public $time; + public $tick; + public $updateTypes; - public function __construct($time) + public function __construct($tick, $updateTypes) { - $this->time = $time; + $this->tick = $tick; + $this->updateTypes = $updateTypes; } - public function getTime() + public function getTick() { - return $this->time; + return $this->tick; + } + + public function isTiming($type) + { + return in_array(type, $this->updateTypes); } } \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateType.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateType.php index 7f7349dfd..ad92a0389 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateType.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateType.php @@ -11,22 +11,22 @@ namespace mineplex\plugin\core\updater; class UpdateType { - const MIN_64 = 3840000; - const MIN_32 = 1920000; - const MIN_16 = 960000; - const MIN_08 = 480000; - const MIN_04 = 240000; - const MIN_02 = 120000; - const MIN_01 = 60000; - const SLOWEST = 32000; - const SLOWER = 16000; - const SLOW = 4000; - const TWOSEC = 2000; - const SEC = 1000; - const FAST = 500; - const FASTER = 250; - const FASTEST = 125; - const TICK = 49; + const M64 = 3840000; + conSt M32 = 1920000; + conSt M16 = 960000; + conSt M8 = 480000; + conSt M4 = 240000; + conSt M2 = 120000; + conSt M1 = 60000; + conSt S32 = 32000; + conSt S16 = 16000; + conSt S8 = 8000; + conSt S4 = 4000; + conSt S2 = 2000; + conSt S1 = 1000; + conSt MS500 = 500; + conSt MS250 = 250; + conSt MS125 = 125; public $time; diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php index 4d833ed2e..e219e179c 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php @@ -21,38 +21,44 @@ class Updater extends PluginTask { $this->plugin = $host; $this->owner = $host; + $this->plugin->getServer()->getScheduler()->scheduleRepeatingTask($this, 1); $this->updateTypes = array( - new UpdateType(UpdateType::TICK) - , new UpdateType(UpdateType::FASTEST) - , new UpdateType(UpdateType::FASTER) - , new UpdateType(UpdateType::FAST) - , new UpdateType(UpdateType::SEC) - , new UpdateType(UpdateType::TWOSEC) - , new UpdateType(UpdateType::SLOW) - , new UpdateType(UpdateType::SLOWER) - , new UpdateType(UpdateType::SLOWEST) - , new UpdateType(UpdateType::MIN_01) - , new UpdateType(UpdateType::MIN_02) - , new UpdateType(UpdateType::MIN_04) - , new UpdateType(UpdateType::MIN_08) - , new UpdateType(UpdateType::MIN_16) - , new UpdateType(UpdateType::MIN_32) - , new UpdateType(UpdateType::MIN_64)); + new UpdateType(UpdateType::MS125) + , new UpdateType(UpdateType::MS250) + , new UpdateType(UpdateType::MS500) + , new UpdateType(UpdateType::S1) + , new UpdateType(UpdateType::S2) + , new UpdateType(UpdateType::S4) + , new UpdateType(UpdateType::S8) + , new UpdateType(UpdateType::S16) + , new UpdateType(UpdateType::S32) + , new UpdateType(UpdateType::M1) + , new UpdateType(UpdateType::M2) + , new UpdateType(UpdateType::M4) + , new UpdateType(UpdateType::M8) + , new UpdateType(UpdateType::M16) + , new UpdateType(UpdateType::M32)); } + //Fires off an event each tick, containing a list of all updateTypes public function onRun($currentTick) { + $updateTypes = array(); + $timeSpent = round(microtime(true) * 1000) - $this->last; $this->last = round(microtime(true) * 1000); - foreach ($this->updateTypes as &$updateType) - { - if ($timeSpent >= $updateType->time) - { - $this->plugin->getServer()->getPluginManager()->callEvent(new UpdateEvent($updateType->time)); - } - } + foreach ($this->updateTypes as &$updateType) + { + if ($timeSpent >= $updateType->time) + { + array_push($updateTypes, $updateType); + } + } + + //Call Event + $this->plugin->getServer()->getPluginManager()->callEvent(new UpdateEvent($currentTick, $updateTypes)); } } \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/events/TickEvent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/events/TickEvent.php deleted file mode 100644 index acdb410e3..000000000 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/events/TickEvent.php +++ /dev/null @@ -1,22 +0,0 @@ -tick = $currentTick; - } - - public function getTick() - { - return $this->tick; - } -} \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/tasks/TickTask.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/tasks/TickTask.php deleted file mode 100644 index 39905d1f5..000000000 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/tasks/TickTask.php +++ /dev/null @@ -1,23 +0,0 @@ -plugin = $host; - $this->owner = $host; - } - - public function onRun($currentTick) - { - $this->plugin->getServer()->getPluginManager()->callEvent(new TickEvent($currentTick)); - } -} \ No newline at end of file From 6d05e40df20b6d608cdafc253bcd655ae3fccf8b Mon Sep 17 00:00:00 2001 From: Aaron Brock Date: Wed, 1 Jul 2015 22:11:57 -0400 Subject: [PATCH 12/52] Things Signed-off-by: Aaron Brock --- .../src/mineplex/plugin/bench/arenas/SingleGameArena.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php index 294f0a97d..bb6bb0dff 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php @@ -54,7 +54,6 @@ class SingleGameArena implements Arena, Listener { public function removePlayer(Player $player) { - if(($key = array_search($player, $this->players, true)) !== FALSE) { unset($this->players[$key]); } @@ -62,10 +61,6 @@ class SingleGameArena implements Arena, Listener { $this->plugin->getServer()->getPluginManager()->callEvent(new ArenaQuitEvent($this, $player)); } - - - - public function onJoin(PlayerJoinEvent $event) { if ($this->canJoin($event->getPlayer())) From 556e524e1844f34296ab9b0454f483f596b51532 Mon Sep 17 00:00:00 2001 From: Cheese Date: Thu, 2 Jul 2015 16:14:47 +1000 Subject: [PATCH 13/52] changed notifications back to 75% sale --- .../src/mineplex/core/notifier/NotificationManager.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/notifier/NotificationManager.java b/Plugins/Mineplex.Core/src/mineplex/core/notifier/NotificationManager.java index 8367fa243..c7e93f4e3 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/notifier/NotificationManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/notifier/NotificationManager.java @@ -42,11 +42,11 @@ public class NotificationManager extends MiniPlugin if (!_enabled) return; - //if (event.getType() == UpdateType.MIN_08) - // hugeSale(); + if (event.getType() == UpdateType.MIN_08) + hugeSale(); - if (event.getType() == UpdateType.MIN_16) - sale(); +// if (event.getType() == UpdateType.MIN_16) +// sale(); } private void sale() From 060a928dd5992b629bf4155eaa4986c0d76b25df Mon Sep 17 00:00:00 2001 From: Aaron Brock Date: Fri, 3 Jul 2015 01:02:16 -0400 Subject: [PATCH 14/52] Added bench time stuff. Signed-off-by: Aaron Brock --- Pocket/plugins/Mineplex/src/Test.php | 17 ++++ .../countdown/GameStateCountdown.php | 26 +++--- .../bench/game/components/feature/Feature.php | 20 +++++ .../feature/GameStateFeatureManager.php | 65 ++++++++++++++ .../feature/features/NoBlockBreak.php | 51 +++++++++++ .../game/components/gamestate/GameState.php | 10 +-- .../bench/game/components/gamestate/Test.php | 15 ---- .../plugin/bench/game/games/pvp/Pvp.php | 4 + .../plugin/bench/time/BenchSchedule.php | 85 +++++++++++++++++++ .../mineplex/plugin/bench/time/BenchTask.php | 17 ++++ .../plugin/bench/time/BenchTaskData.php | 43 ++++++++++ .../mineplex/plugin/core/updater/Updater.php | 11 +-- 12 files changed, 327 insertions(+), 37 deletions(-) create mode 100644 Pocket/plugins/Mineplex/src/Test.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/Feature.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/GameStateFeatureManager.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php delete mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/Test.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/time/BenchSchedule.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/time/BenchTask.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/time/BenchTaskData.php diff --git a/Pocket/plugins/Mineplex/src/Test.php b/Pocket/plugins/Mineplex/src/Test.php new file mode 100644 index 000000000..1a14d662a --- /dev/null +++ b/Pocket/plugins/Mineplex/src/Test.php @@ -0,0 +1,17 @@ + $moo) +{ + if ($moo == '2') + unset ($array[$key]); +} + +print_r($array); \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php index 472c362e9..55708de72 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php @@ -8,30 +8,35 @@ namespace mineplex\plugin\bench\game\components\countdown; - use mineplex\plugin\bench\arenas\Arena; use mineplex\plugin\bench\arenas\events\ArenaEndEvent; use mineplex\plugin\bench\game\components\gamestate\GameStateComponent; +use mineplex\plugin\bench\time\BenchSchedule; +use mineplex\plugin\bench\time\BenchTask; +use mineplex\plugin\bench\time\BenchTaskData; use pocketmine\event\HandlerList; use pocketmine\event\Listener; -use pocketmine\scheduler\PluginTask; use pocketmine\Server; use mineplex\plugin\bench\game\components\gamestate\events\GameStateChangeEvent; -class GameStateCountdown extends PluginTask implements Listener { +class GameStateCountdown implements Listener, BenchTask { private $startCount; private $count; private $gameStateComponent; private $arena; - private $task; - private $startGameState; private $setGameState; + private $scheduler; + + + public function __construct(Arena $arena, GameStateComponent $gameStateComponent, $count, $startGameState, $setGameState) { - parent::__construct($arena->getPlugin()); + + $this->scheduler = new BenchSchedule($arena->getPlugin()); + $this->arena = $arena; $this->gameStateComponent = $gameStateComponent; @@ -55,14 +60,12 @@ class GameStateCountdown extends PluginTask implements Listener { if ($event->getToGameState() == $this->startGameState) { - $this->task = Server::getInstance()->getScheduler()->scheduleRepeatingTask($this, 20); + $this->scheduler->runTaskTimer($this, 1000, 1000); } else { $this->count = $this->startCount; - $this->task->cancel(); - } } @@ -74,7 +77,7 @@ class GameStateCountdown extends PluginTask implements Listener { HandlerList::unregisterAll($this); } - public function onRun($currentTick) + public function run(BenchTaskData $data) { print "Count: $this->count"."\n"; @@ -85,9 +88,11 @@ class GameStateCountdown extends PluginTask implements Listener { if ($this->count <= 0) { $this->gameStateComponent->setGameState($this->setGameState); + $data->end(); } } + public function popup() { foreach ($this->arena->getPlayers() as $player) @@ -95,4 +100,5 @@ class GameStateCountdown extends PluginTask implements Listener { $player->sendPopup("Countdown: $this->count"); } } + } \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/Feature.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/Feature.php new file mode 100644 index 000000000..026352b4b --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/Feature.php @@ -0,0 +1,20 @@ +arena = $arena; + + unset ($features[GameState::RESTARTING]); + + $this->features = $features; + + Server::getInstance()->getPluginManager()->registerEvents($this, $arena->getPlugin()); + } + + public function onGameStateChange(GameStateChangeEvent $event) + { + if ($event->getArena() !== $this->arena) + return; + + $lastFeatures = $this->features[$event->getFromGameState()]; + $theseFeatures = $this->features[$event->getToGameState()]; + + $toEnable = array_diff($theseFeatures, $lastFeatures); + $toDisable = array_diff($lastFeatures, $theseFeatures); + + foreach ($toEnable as $feature) { + //$feature-> + } + + } + + public function onEnd(ArenaEndEvent $event) + { + if ($event->getArena() !== $this->arena) + return; + HandlerList::unregisterAll($this); + } +} \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php new file mode 100644 index 000000000..e69533750 --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php @@ -0,0 +1,51 @@ +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() + { + $this->enabled = false; + HandlerList::unregisterAll($this); + } + public function isEnabled() + { + return $this->enabled; + } +} \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameState.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameState.php index d72fbcbc8..46413d66d 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameState.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameState.php @@ -12,10 +12,10 @@ namespace mineplex\plugin\bench\game\components\gamestate; //Yes yes I know this is a horrible way of doing things, I'm just trying to get done fast. class GameState { - const LOBBY = 1; - const PRE_GAME = 2; - const GAME = 3; - const POST_GAME = 4; - const RESTARTING = 5; + const LOBBY = 0; + const PRE_GAME = 1; + const GAME = 2; + const POST_GAME = 3; + const RESTARTING = 4; } \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/Test.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/Test.php deleted file mode 100644 index eb777d4a3..000000000 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/Test.php +++ /dev/null @@ -1,15 +0,0 @@ -getGameState(); \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/pvp/Pvp.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/pvp/Pvp.php index 9312d955e..4b1d25002 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/pvp/Pvp.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/pvp/Pvp.php @@ -8,6 +8,7 @@ namespace mineplex\plugin\bench\game\games\pvp; use mineplex\plugin\bench\game\components\countdown\GameStateCountdown; +use mineplex\plugin\bench\game\components\feature\features\NoBlockBreak; use mineplex\plugin\bench\game\components\gamestate\GameState; use mineplex\plugin\bench\game\components\gamestate\GameStateComponent; use pocketmine\event\Listener; @@ -20,6 +21,9 @@ class Pvp implements Game, Listener { { $gameStateComponent = new GameStateComponent($arena); + array( + ); + new GameStateCountdown($arena, $gameStateComponent, 20, GameState::LOBBY, GameState::PRE_GAME); //new GameStateCountdown($arena, $gameStateComponent, 10, GameState::PRE_GAME, GameState::GAME); diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/time/BenchSchedule.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/time/BenchSchedule.php new file mode 100644 index 000000000..98645c167 --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/time/BenchSchedule.php @@ -0,0 +1,85 @@ +getScheduler()->scheduleRepeatingTask($this, 1); + } + + //Fires off an event each tick, containing a list of all updateTypes + + public function onRun($currentTick) + { + $currentTime = round(microtime(true) * 1000); + + foreach ($this->tasks as $key => $task) { + + if (!($currentTime >= $task->getNextRun())) + continue; + + $task->getTaskData()->getTask()->run($task->getTaskData()); + + if ($task->getTaskData()->getPeriod() == null or $task->getTaskData()->getPeriod() < 0) { + + unset($this->tasks[$key]); + + } else { + $task->setNextRun($currentTime + $task->getTaskData()->getPeriod()); + } + } + } + + public function runTaskTimer(BenchTask $task, $wait, $period) + { + $taskData = new BenchTaskData($task, $period); + $actualTask = new ActualBenchTask($taskData, round(microtime(true) * 1000) + $wait); + array_push($this->tasks, $actualTask); + } +} + +class ActualBenchTask +{ + private $nextRun; + + private $benchTaskData; + + public function __construct(BenchTaskData $benchTaskData, $nextRun) + { + $this->benchTaskData = $benchTaskData; + $this->runNext = $nextRun; + } + + function getNextRun() + { + return $this->nextRun; + } + + function setNextRun($nextRun) + { + $this->nextRun = $nextRun; + } + + function getTaskData() + { + return $this->benchTaskData; + } + +} \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/time/BenchTask.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/time/BenchTask.php new file mode 100644 index 000000000..518244060 --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/time/BenchTask.php @@ -0,0 +1,17 @@ +task = $task; + $this->period = $period; + } + + public function getTask() + { + return $this->task; + } + + public function getPeriod() + { + return $this->period; + } + + public function setPeriod($period) + { + $this->period = $period; + } + + public function end() + { + $this->period = null; + } +} \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php index e219e179c..57089225b 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php @@ -19,8 +19,8 @@ class Updater extends PluginTask public function __construct(PluginBase $host) { + parent::__construct($host); $this->plugin = $host; - $this->owner = $host; $this->plugin->getServer()->getScheduler()->scheduleRepeatingTask($this, 1); @@ -50,14 +50,11 @@ class Updater extends PluginTask $timeSpent = round(microtime(true) * 1000) - $this->last; $this->last = round(microtime(true) * 1000); - foreach ($this->updateTypes as &$updateType) - { - if ($timeSpent >= $updateType->time) - { - array_push($updateTypes, $updateType); + foreach ($this->updateTypes as &$updateType) { + if ($timeSpent >= $updateType->time) { + array_push($updateTypes, $updateType); } } - //Call Event $this->plugin->getServer()->getPluginManager()->callEvent(new UpdateEvent($currentTick, $updateTypes)); } From 73ffc97cc90a2c0633e2b8a7125ca8611632d017 Mon Sep 17 00:00:00 2001 From: Aaron Brock Date: Fri, 3 Jul 2015 14:14:24 -0400 Subject: [PATCH 15/52] A more complete BenchSchedule. Signed-off-by: Aaron Brock --- .../src/mineplex/plugin/bench/game/Game.php | 2 +- .../countdown/GameStateCountdown.php | 11 +- .../gamestate/GameStateComponent.php | 2 +- .../gamestate/events/GameStateChangeEvent.php | 2 +- .../bench/game/games/pvp/PvpComponent.php | 2 +- .../plugin/bench/time/BenchSchedule.php | 123 +++++++++++++++--- .../mineplex/plugin/bench/time/BenchTask.php | 2 +- .../plugin/bench/time/BenchTaskData.php | 53 +++++++- 8 files changed, 160 insertions(+), 37 deletions(-) diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/Game.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/Game.php index e05da5701..afbb38aba 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/Game.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/Game.php @@ -1,7 +1,7 @@ scheduler = new BenchSchedule($arena->getPlugin()); - $this->arena = $arena; $this->gameStateComponent = $gameStateComponent; @@ -59,12 +53,11 @@ class GameStateCountdown implements Listener, BenchTask { if ($event->getToGameState() == $this->startGameState) { - - $this->scheduler->runTaskTimer($this, 1000, 1000); - + BenchSchedule::runTaskTimer($this, 1000, 1000); } else { + BenchSchedule::cancelTask($this); $this->count = $this->startCount; } } diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameStateComponent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameStateComponent.php index 029ac3b90..00f9c8036 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameStateComponent.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameStateComponent.php @@ -1,7 +1,7 @@ getScheduler()->scheduleRepeatingTask($this, 1); } - //Fires off an event each tick, containing a list of all updateTypes - public function onRun($currentTick) { $currentTime = round(microtime(true) * 1000); @@ -37,28 +47,98 @@ class BenchSchedule extends PluginTask $task->getTaskData()->getTask()->run($task->getTaskData()); - if ($task->getTaskData()->getPeriod() == null or $task->getTaskData()->getPeriod() < 0) { - + if ($task->getTaskData()->getNextRun() !== null) + { + $task->setNextRun($task->getTaskData()->getNextRun()); + $task->getTaskData()->setNextRun(null); + } elseif ($task->getTaskData()->getPeriod() == null or $task->getTaskData()->getPeriod() < 0) { unset($this->tasks[$key]); - } else { $task->setNextRun($currentTime + $task->getTaskData()->getPeriod()); } } } - public function runTaskTimer(BenchTask $task, $wait, $period) + + /** + * @param BenchTask $taskToCancel + */ + public static function cancelTask(BenchTask $taskToCancel) { - $taskData = new BenchTaskData($task, $period); - $actualTask = new ActualBenchTask($taskData, round(microtime(true) * 1000) + $wait); - array_push($this->tasks, $actualTask); + foreach (self::getInstance()->tasks as $key => $task) + { + if ($task->getTaskData()->getTask() === $taskToCancel) + { + unset (self::getInstance()->tasks[$key]); + } + } } + + /** + * @param BenchTask $taskToCancel + * @param $id + */ + public static function cancelTaskWithId(BenchTask $taskToCancel, $id) + { + foreach (self::getInstance()->tasks as $key => $task) + { + if ($task->getTaskData()->getTask() === $taskToCancel && $task->getTaskData()->getId() === $id) + { + unset (self::getInstance()->tasks[$key]); + } + } + } + + /** + * @param BenchTask $task + * @param int $wait + * @param int $period + * @param $id + */ + public static function runTaskTimerWithId(BenchTask $task, $wait, $period, $id) + { + $taskData = new BenchTaskData($task, $period, $id); + $actualTask = new ActualBenchTask($taskData, round(microtime(true) * 1000) + $wait); + array_push(self::getInstance()->tasks, $actualTask); + } + + /** + * @param BenchTask $task + * @param int $wait + * @param int $period + */ + public static function runTaskTimer(BenchTask $task, $wait, $period) + { + self::runTaskTimerWithId($task, $wait, $period, null); + } + + /** + * @param BenchTask $task + * @param int $wait + * @param $id + */ + public static function runTaskLaterWithId(BenchTask $task, $wait, $id) + { + self::runTaskTimerWithId($task, $wait, null, $id); + } + + /** + * @param BenchTask $task + * @param int $wait + */ + public static function runTaskLater(BenchTask $task, $wait) + { + self::runTaskTimerWithId($task, $wait, null, null); + } + } class ActualBenchTask { + /** @var int */ private $nextRun; + /** @var BenchTaskData */ private $benchTaskData; public function __construct(BenchTaskData $benchTaskData, $nextRun) @@ -67,19 +147,28 @@ class ActualBenchTask $this->runNext = $nextRun; } + /** + * @return int + */ function getNextRun() { return $this->nextRun; } + /** + * @param $nextRun + */ function setNextRun($nextRun) { $this->nextRun = $nextRun; } + /** + * @return BenchTaskData + */ function getTaskData() { return $this->benchTaskData; } -} \ No newline at end of file +} diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/time/BenchTask.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/time/BenchTask.php index 518244060..6aaf8283b 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/time/BenchTask.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/time/BenchTask.php @@ -1,7 +1,7 @@ task = $task; $this->period = $period; + $this->id = $id; } + /** + * @param int $period + */ + public function setPeriod($period) + { + $this->period = $period; + } + + /** + * @param int $nextRun + */ + public function setNextRun($nextRun) + { + $this->nextRun = $nextRun; + } + + /** + * @return int + */ + public function getNextRun() + { + return $this->nextRun; + } + + /** + * @return BenchTask + */ public function getTask() { return $this->task; } + /** + * @return int + */ public function getPeriod() { return $this->period; } - public function setPeriod($period) + /** + * @return mixed + */ + public function getId() { - $this->period = $period; + return $this->id; } + public function end() { $this->period = null; From 00b5c6f3d46ed5a1128d2ef26eefb16bbaf54975 Mon Sep 17 00:00:00 2001 From: Aaron Brock Date: Sat, 4 Jul 2015 03:01:56 -0400 Subject: [PATCH 16/52] Fixing/adding some things. Signed-off-by: Aaron Brock --- Pocket/plugins/Mineplex/src/Test.php | 18 ++-- .../countdown/GameStateCountdown.php | 4 - .../feature/GameStateFeatureManager.php | 87 +++++++++++++++++-- .../feature/features/NoBlockBreak.php | 3 + .../feature/features/NoMovement.php | 63 ++++++++++++++ .../gamestate/GameStateComponent.php | 16 +++- .../plugin/bench/game/games/pvp/Pvp.php | 20 +++-- 7 files changed, 187 insertions(+), 24 deletions(-) create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoMovement.php diff --git a/Pocket/plugins/Mineplex/src/Test.php b/Pocket/plugins/Mineplex/src/Test.php index 1a14d662a..7775713b2 100644 --- a/Pocket/plugins/Mineplex/src/Test.php +++ b/Pocket/plugins/Mineplex/src/Test.php @@ -1,17 +1,23 @@ $moo) +function myfunction($a,$b) { - if ($moo == '2') - unset ($array[$key]); + if ($a===$b) + { + return 0; + } + return ($a>$b)?1:-1; } -print_r($array); \ No newline at end of file +$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); \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php index ff0565c7f..3ad507c14 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/countdown/GameStateCountdown.php @@ -48,9 +48,6 @@ class GameStateCountdown implements Listener, BenchTask { if ($event->getArena() !== $this->arena) return; - Server::getInstance()->broadcastMessage("ToGameState:".(string)$event->getToGameState()); - Server::getInstance()->broadcastMessage("StartGameState: $this->startGameState"); - if ($event->getToGameState() == $this->startGameState) { BenchSchedule::runTaskTimer($this, 1000, 1000); @@ -83,7 +80,6 @@ class GameStateCountdown implements Listener, BenchTask { $this->gameStateComponent->setGameState($this->setGameState); $data->end(); } - } public function popup() diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/GameStateFeatureManager.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/GameStateFeatureManager.php index 6273e2d69..ac5fd8a68 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/GameStateFeatureManager.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/GameStateFeatureManager.php @@ -44,22 +44,97 @@ class GameStateFeatureManager implements Listener { if ($event->getArena() !== $this->arena) return; - $lastFeatures = $this->features[$event->getFromGameState()]; - $theseFeatures = $this->features[$event->getToGameState()]; + /** @var Feature[] $lastFeatures */ - $toEnable = array_diff($theseFeatures, $lastFeatures); - $toDisable = array_diff($lastFeatures, $theseFeatures); + if (isset($this->features[$event->getFromGameState()]) || array_key_exists($event->getFromGameState(), $this->features)) + $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) { - //$feature-> + if (!$feature->isEnabled()) + $feature->enable(); } + foreach ($toDisable as $feature) { + if ($feature->isEnabled()) + $feature->disable(); + } } public function onEnd(ArenaEndEvent $event) { if ($event->getArena() !== $this->arena) return; + + /** @var Feature[] $iterator */ + $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($this->features)); + + foreach ($iterator as $feature) { + if ($feature->isEnabled()) + $feature->disable(); + } + HandlerList::unregisterAll($this); } -} \ No newline at end of file + + function comp($a,$b) + { + if ($a===$b) + { + return 0; + } + return ($a>$b)?1:-1; + } + +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php index e69533750..2d61edcd6 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php @@ -35,15 +35,18 @@ class NoBlockBreak implements Feature, Listener { public function enable() { + Server::getInstance()->broadcastMessage("Enabled!"); $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; diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoMovement.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoMovement.php new file mode 100644 index 000000000..ed3a5bf66 --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoMovement.php @@ -0,0 +1,63 @@ +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; + } +} \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameStateComponent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameStateComponent.php index 00f9c8036..ea79c9141 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameStateComponent.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/gamestate/GameStateComponent.php @@ -37,12 +37,16 @@ class GameStateComponent implements Listener { $this->setGameState(GameState::LOBBY); } + /** + * @priority LOW + * @param ArenaEndEvent $event + */ public function onEnd(ArenaEndEvent $event) { if ($event->getArena() !== $this->arena) return; HandlerList::unregisterAll($this); - $this->setGameState(GameState::RESTARTING); + $this->localSetState(GameState::RESTARTING); } @@ -64,13 +68,19 @@ class GameStateComponent implements Listener { return true; } + $this->localSetState($gameState); + + return true; + } + + private function localSetState($gameState) + { + $event = new GameStateChangeEvent($this->arena, $this->gameState, $gameState); //Not sure if I should call the event before of after... Server::getInstance()->getPluginManager()->callEvent($event); $this->gameState = $gameState; - - return true; } public function getGameState() diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/pvp/Pvp.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/pvp/Pvp.php index 4b1d25002..1b7837765 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/pvp/Pvp.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/pvp/Pvp.php @@ -1,7 +1,7 @@ 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, 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); } } \ No newline at end of file From 514fe4a18a6124f0dfc29dbe9dd273ea5e294c10 Mon Sep 17 00:00:00 2001 From: Aaron Brock Date: Sat, 4 Jul 2015 20:59:15 -0400 Subject: [PATCH 17/52] Added some stuff. Signed-off-by: Aaron Brock --- .../Mineplex/src/mineplex/plugin/Main.php | 79 +++----------- .../mineplex/plugin/bench/arenas/Arena.php | 10 +- .../plugin/bench/arenas/ArenaEvent.php | 2 +- .../plugin/bench/arenas/MultiGameArena.php | 102 ++++++++++++++++++ .../plugin/bench/arenas/SingleGameArena.php | 3 +- .../bench/arenas/events/ArenaCanJoinEvent.php | 2 +- .../bench/arenas/events/ArenaEndEvent.php | 2 +- .../bench/arenas/events/ArenaJoinEvent.php | 2 +- .../bench/arenas/events/ArenaQuitEvent.php | 2 +- .../bench/arenas/events/ArenaStartEvent.php | 2 +- .../countdown/GameStateCountdown.php | 12 ++- .../bench/game/components/feature/Feature.php | 2 +- .../feature/GameStateFeatureManager.php | 6 +- .../feature/features/NoBlockBreak.php | 36 ++++++- .../feature/features/NoMovement.php | 2 +- .../game/components/gamestate/GameState.php | 2 +- .../plugin/bench/game/factory/GameFactory.php | 18 ++++ .../bench/game/factory/TestGameFactory.php | 20 ++++ .../plugin/bench/game/games/pvp/Pvp.php | 6 +- .../bench/game/games/sg/SurvivalGames.php | 46 ++++++++ 20 files changed, 268 insertions(+), 88 deletions(-) create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/MultiGameArena.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/factory/GameFactory.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/factory/TestGameFactory.php create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/sg/SurvivalGames.php diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php index e9d7f1cd4..fec53f2c5 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php @@ -2,24 +2,26 @@ namespace mineplex\plugin; - -use mineplex\plugin\bench\arenas\SingleGameArena; -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 mineplex\plugin\bench\arenas\MultiGameArena; +use mineplex\plugin\bench\game\factory\TestGameFactory; use pocketmine\event\Listener; -use pocketmine\event\player\PlayerCommandPreprocessEvent; use pocketmine\event\player\PlayerJoinEvent; +use pocketmine\event\player\PlayerLoginEvent; +use pocketmine\event\player\PlayerQuitEvent; use pocketmine\plugin\PluginBase; +use mineplex\plugin\bench\arenas\Arena; use pocketmine\Server; class Main extends PluginBase implements Listener { + /** @var Arena */ + private $arena; + 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); @@ -27,64 +29,17 @@ class Main extends PluginBase implements Listener //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(); - - $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) - { - + $this->arena->addPlayer($event->getPlayer()); } } \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/Arena.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/Arena.php index dc266e03e..8d7165749 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/Arena.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/Arena.php @@ -1,7 +1,7 @@ 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; + } +} \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php index bb6bb0dff..b5fefc275 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/SingleGameArena.php @@ -31,7 +31,6 @@ class SingleGameArena implements Arena, Listener { public function __construct(Plugin $plugin, Game $game) { - print 'SimpleGameArena Created!'; Server::getInstance()->getPluginManager()->registerEvents($this, $plugin); $this->game = $game; $this->plugin = $plugin; @@ -100,7 +99,7 @@ class SingleGameArena implements Arena, Listener { foreach ($this->players as $player) { Server::getInstance()->broadcastMessage((string)$player->getName()); - $player->kick('Game Over...'); + $player->kick('Game Over...', false); } } diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaCanJoinEvent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaCanJoinEvent.php index 371365268..f45b71c7f 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaCanJoinEvent.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/arenas/events/ArenaCanJoinEvent.php @@ -1,7 +1,7 @@ count"."\n"; - $this->popup(); - - $this->count--; - if ($this->count <= 0) { $this->gameStateComponent->setGameState($this->setGameState); $data->end(); } + + $this->popup(); + + $this->count--; + + } public function popup() diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/Feature.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/Feature.php index 026352b4b..e5e2d02e1 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/Feature.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/Feature.php @@ -1,7 +1,7 @@ getArena() !== $this->arena) return; - /** @var Feature[] $iterator */ + $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($this->features)); foreach ($iterator as $feature) { diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php index 2d61edcd6..15344a34e 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php @@ -1,7 +1,7 @@ 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; } @@ -30,7 +56,9 @@ class NoBlockBreak implements Feature, Listener { { if (!in_array($event->getPlayer(), $this->arena->getPlayers())) 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() diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoMovement.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoMovement.php index ed3a5bf66..e1994b845 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoMovement.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoMovement.php @@ -1,7 +1,7 @@ array($noBlockBreak), GameState::PRE_GAME => array($noBlockBreak), - GameState::POST_GAME => array($noBlockBreak), + GameState::GAME => array($noBlockBreak), + GameState::POST_GAME => array($noBlockBreak) ); new GameStateFeatureManager($arena, $features); diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/sg/SurvivalGames.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/sg/SurvivalGames.php new file mode 100644 index 000000000..21066e32d --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/sg/SurvivalGames.php @@ -0,0 +1,46 @@ + 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); + } +} \ No newline at end of file From e002e4af180d63146b197c86dd4415024f1c5151 Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Sun, 5 Jul 2015 13:37:07 +1200 Subject: [PATCH 18/52] Disguises: Added ArmorStandDisguise, removed unused DisguiseType and added ability to add fake armor to disguises --- .../core/disguise/DisguiseManager.java | 32 +++- .../mineplex/core/disguise/DisguiseType.java | 20 --- .../disguises/DisguiseArmorStand.java | 146 ++++++++++++++++++ .../disguises/DisguiseInsentient.java | 19 ++- .../disguise/disguises/DisguiseLiving.java | 85 +++++++++- 5 files changed, 261 insertions(+), 41 deletions(-) delete mode 100644 Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseType.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseArmorStand.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java index 8939dda81..521812057 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java @@ -64,6 +64,7 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.disguise.disguises.DisguiseBase; import mineplex.core.disguise.disguises.DisguiseBlock; import mineplex.core.disguise.disguises.DisguiseInsentient; +import mineplex.core.disguise.disguises.DisguiseLiving; import mineplex.core.disguise.disguises.DisguisePlayer; import mineplex.core.disguise.disguises.DisguiseRabbit; import mineplex.core.packethandler.IPacketHandler; @@ -863,6 +864,11 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler handlePacket(new PacketPlayOutEntityTeleport(pDisguise.GetEntity()), packetVerifier); } + for (Packet packet : pDisguise.getEquipmentPackets()) + { + handlePacket(packet, packetVerifier); + } + handlePacket(pDisguise.GetMetaDataPacket(), packetVerifier); Bukkit.getScheduler().scheduleSyncDelayedTask(getPlugin(), new Runnable() @@ -876,6 +882,16 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler else { handlePacket(disguise.GetSpawnPacket(), packetVerifier); + + if (disguise instanceof DisguiseLiving) + { + ArrayList packets = ((DisguiseLiving) disguise).getEquipmentPackets(); + + for (Packet packet : packets) + { + handlePacket(packet, packetVerifier); + } + } } } @@ -981,7 +997,7 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler { entity.getEntityId() }); - + for (Player player : players) { entityTracker.clear(((CraftPlayer) player).getHandle()); @@ -1111,22 +1127,22 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler entityPlayer.playerConnection.sendPacket(disguise.GetMetaDataPacket()); } } - + @EventHandler public void cleanDisguises(UpdateEvent event) { if (event.getType() != UpdateType.SLOWER || _disguisePlayerMap.isEmpty()) return; - + for (Iterator disguiseIterator = _disguisePlayerMap.keySet().iterator(); disguiseIterator.hasNext();) { DisguiseBase disguise = disguiseIterator.next(); - + if (!(disguise.GetEntity() instanceof EntityPlayer)) continue; - - EntityPlayer disguisedPlayer = (EntityPlayer)disguise.GetEntity(); - + + EntityPlayer disguisedPlayer = (EntityPlayer) disguise.GetEntity(); + if (Bukkit.getPlayerExact(disguisedPlayer.getName()) == null || !disguisedPlayer.isAlive() || !disguisedPlayer.valid) disguiseIterator.remove(); else @@ -1134,7 +1150,7 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler for (Iterator playerIterator = _disguisePlayerMap.get(disguise).iterator(); playerIterator.hasNext();) { Player player = playerIterator.next(); - + if (!player.isOnline() || !player.isValid()) playerIterator.remove(); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseType.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseType.java deleted file mode 100644 index 313ab0b89..000000000 --- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseType.java +++ /dev/null @@ -1,20 +0,0 @@ -package mineplex.core.disguise; - -public enum DisguiseType -{ - Zombie, - PigZombie, - Cow, - Pig, - Horse, - Wolf, - Ocelot, - Sheep, - Chicken, - Slime, - Blaze, - IronGolem, - Skeleton, - WitherSkeleton, - Wither -} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseArmorStand.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseArmorStand.java new file mode 100644 index 000000000..e3ecbc41c --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseArmorStand.java @@ -0,0 +1,146 @@ +package mineplex.core.disguise.disguises; + +import org.bukkit.util.Vector; + +import net.minecraft.server.v1_7_R4.EnumEntitySize; +import net.minecraft.server.v1_7_R4.MathHelper; +import net.minecraft.server.v1_7_R4.Packet; +import net.minecraft.server.v1_7_R4.PacketPlayOutSpawnEntityLiving; + +public class DisguiseArmorStand extends DisguiseInsentient +{ + private Vector _headPosition; + + public DisguiseArmorStand(org.bukkit.entity.Entity entity) + { + super(entity); + + DataWatcher.a(10, (byte) 0); + + for (int i = 11; i < 17; i++) + { + DataWatcher.a(i, new Vector(0, 0, 0)); + } + + // Rotations are from -360 to 360 + } + + public Vector getHeadPosition() + { + return _headPosition.clone(); + } + + protected String getHurtSound() + { + return null; + } + + @Override + public Packet GetSpawnPacket() + { + PacketPlayOutSpawnEntityLiving packet = new PacketPlayOutSpawnEntityLiving(); + packet.a = Entity.getId(); + packet.b = (byte) 30; + packet.c = (int) EnumEntitySize.SIZE_2.a(Entity.locX); + packet.d = (int) MathHelper.floor(Entity.locY * 32.0D); + packet.e = (int) EnumEntitySize.SIZE_2.a(Entity.locZ); + packet.i = (byte) ((int) (Entity.yaw * 256.0F / 360.0F)); + packet.j = (byte) ((int) (Entity.pitch * 256.0F / 360.0F)); + packet.k = (byte) ((int) (Entity.yaw * 256.0F / 360.0F)); + + double var2 = 3.9D; + double var4 = 0; + double var6 = 0; + double var8 = 0; + + if (var4 < -var2) + { + var4 = -var2; + } + + if (var6 < -var2) + { + var6 = -var2; + } + + if (var8 < -var2) + { + var8 = -var2; + } + + if (var4 > var2) + { + var4 = var2; + } + + if (var6 > var2) + { + var6 = var2; + } + + if (var8 > var2) + { + var8 = var2; + } + + packet.f = (int) (var4 * 8000.0D); + packet.g = (int) (var6 * 8000.0D); + packet.h = (int) (var8 * 8000.0D); + + packet.l = DataWatcher; + packet.m = DataWatcher.b(); + + return packet; + } + + public void setBodyPosition(Vector vector) + { + DataWatcher.watch(12, vector); + } + + public void setHasArms() + { + DataWatcher.watch(10, (byte) DataWatcher.getByte(10) | 4); + } + + public void setHeadPosition(Vector vector) + { + _headPosition = vector; + DataWatcher.watch(11, vector); + } + + public void setLeftArmPosition(Vector vector) + { + DataWatcher.watch(13, vector); + } + + public void setLeftLegPosition(Vector vector) + { + DataWatcher.watch(15, vector); + } + + public void setRemoveBase() + { + DataWatcher.watch(10, (byte) DataWatcher.getByte(10) | 8); + } + + public void setRightArmPosition(Vector vector) + { + DataWatcher.watch(14, vector); + } + + public void setRightLegPosition(Vector vector) + { + DataWatcher.watch(16, vector); + } + + public void setSmall() + { + DataWatcher.watch(10, (byte) DataWatcher.getByte(10) | 1); + } + + public void setGravityEffected() + { + DataWatcher.watch(10, (byte) DataWatcher.getByte(10) | 2); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseInsentient.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseInsentient.java index 595a8a25f..d2b6c6c47 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseInsentient.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseInsentient.java @@ -1,11 +1,6 @@ package mineplex.core.disguise.disguises; -import java.util.ArrayList; -import java.util.List; - import mineplex.core.common.*; -import net.minecraft.server.v1_7_R4.Packet; -import net.minecraft.server.v1_7_R4.PacketPlayOutEntityEquipment; import org.bukkit.*; public abstract class DisguiseInsentient extends DisguiseLiving @@ -15,11 +10,15 @@ public abstract class DisguiseInsentient extends DisguiseLiving public DisguiseInsentient(org.bukkit.entity.Entity entity) { super(entity); - - DataWatcher.a(11, Byte.valueOf((byte)0)); - DataWatcher.a(10, ""); - DataWatcher.a(3, Byte.valueOf((byte) 0)); - DataWatcher.a(2, ""); + + DataWatcher.a(3, Byte.valueOf((byte) 0)); + DataWatcher.a(2, ""); + + if (!(this instanceof DisguiseArmorStand)) + { + DataWatcher.a(11, Byte.valueOf((byte) 0)); + DataWatcher.a(10, ""); + } } public void setName(String name) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseLiving.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseLiving.java index 46572e6ec..855de31de 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseLiving.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseLiving.java @@ -1,13 +1,21 @@ package mineplex.core.disguise.disguises; +import java.util.ArrayList; import java.util.Random; +import org.bukkit.Material; +import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + import net.minecraft.server.v1_7_R4.EntityLiving; +import net.minecraft.server.v1_7_R4.Packet; +import net.minecraft.server.v1_7_R4.PacketPlayOutEntityEquipment; public abstract class DisguiseLiving extends DisguiseBase { private static Random _random = new Random(); private boolean _invisible; + private ItemStack[] _equipment = new ItemStack[5]; public DisguiseLiving(org.bukkit.entity.Entity entity) { @@ -19,6 +27,79 @@ public abstract class DisguiseLiving extends DisguiseBase DataWatcher.a(9, Byte.valueOf((byte) 0)); } + public ItemStack[] getEquipment() + { + return _equipment; + } + + public void setEquipment(ItemStack[] equipment) + { + _equipment = equipment; + } + + public void setHelmet(ItemStack item) + { + _equipment[3] = item; + } + + public void setChestplate(ItemStack item) + { + _equipment[2] = item; + } + + public void setLeggings(ItemStack item) + { + _equipment[1] = item; + } + + public void setBoots(ItemStack item) + { + _equipment[0] = item; + } + + public void setHeldItem(ItemStack item) + { + _equipment[4] = item; + } + + public ArrayList getEquipmentPackets() + { + ArrayList packets = new ArrayList(); + + for (int nmsSlot = 0; nmsSlot < 5; nmsSlot++) + { + int armorSlot = nmsSlot - 1; + + if (armorSlot < 0) + armorSlot = 4; + + ItemStack itemstack = _equipment[armorSlot]; + + if (itemstack != null && itemstack.getType() != Material.AIR) + { + ItemStack item = null; + + if (Entity instanceof EntityLiving) + { + item = CraftItemStack.asBukkitCopy(((EntityLiving) Entity).getEquipment()[nmsSlot]); + } + + if (item == null || item.getType() == Material.AIR) + { + PacketPlayOutEntityEquipment packet = new PacketPlayOutEntityEquipment(); + + packet.a = GetEntityId(); + packet.b = nmsSlot; + packet.c = CraftItemStack.asNMSCopy(itemstack); + + packets.add(packet); + } + } + } + + return packets; + } + public void UpdateDataWatcher() { super.UpdateDataWatcher(); @@ -37,14 +118,12 @@ public abstract class DisguiseLiving extends DisguiseBase DataWatcher.watch(9, Entity.getDataWatcher().getByte(9)); } } - - public boolean isInvisible() { return _invisible; } - + public void setInvisible(boolean invisible) { _invisible = invisible; From 8d2b1650afd7d97b34c0df37c3633b07ebf672d6 Mon Sep 17 00:00:00 2001 From: Cheese Date: Sun, 5 Jul 2015 15:13:18 +1000 Subject: [PATCH 19/52] world component for MCPE --- .../mineplex/core/benefit/BenefitManager.java | 2 +- .../game/components/world/WorldComponent.php | 210 ++++++++++++++++++ 2 files changed, 211 insertions(+), 1 deletion(-) create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/world/WorldComponent.php diff --git a/Plugins/Mineplex.Core/src/mineplex/core/benefit/BenefitManager.java b/Plugins/Mineplex.Core/src/mineplex/core/benefit/BenefitManager.java index 2b4a94e96..973950020 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/benefit/BenefitManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/benefit/BenefitManager.java @@ -31,7 +31,7 @@ public class BenefitManager extends MiniDbClientPlugin //_benefits.add(new Christmas2014(plugin, _repository, inventoryManager)); //_benefits.add(new Thanksgiving2014(plugin, _repository, inventoryManager)); - _benefits.add(new Players40k(this, _repository, inventoryManager)); + //_benefits.add(new Players40k(this, _repository, inventoryManager)); } @EventHandler(priority = EventPriority.LOWEST) diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/world/WorldComponent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/world/WorldComponent.php new file mode 100644 index 000000000..72aefb56a --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/world/WorldComponent.php @@ -0,0 +1,210 @@ +arena = $arena; + + $this->gameId = getNewGameId(); + $this->gameFolder = "Game" . $this->gameId . "_" . $this->worldName; + + Server::getInstance()->getPluginManager()->registerEvents($this, $arena->getPlugin()); + } + + private function loadWorld($worldName) + { + $this-$worldName = $worldName; + + //Do this Async? + if ($this->arena->getPlugin()->getServer()->loadLevel($worldName)) + { + $this->world = $this->arena->getPlugin()->getServer()->getLevelByName($worldName); + + loadWorldData(); + } + else + { + print("ERROR LOADING WORLD: " + $worldName); + } + } + + public function loadWorldData($world) + { + $handle = fopen("WorldConfig.dat", "r"); + if ($handle) + { + //These store the array that data should be inserted into + + $currentTeamName = null; + $currentDataName = null; + + while (($line = fgets($handle)) !== false) + { + $tokens = explode(":", $line); + + if (count($tokens) < 2 || strlen($tokens[0]) == 0) + { + continue; + } + + //Name & Author + if (strcmp($tokens[0], "MAP_NAME") === 0) + { + $this->mapName = $tokens[1]; + } + else if (strcmp($tokens[0], "MAP_AUTHOR") === 0) + { + $this->mapAuthor = $tokens[1]; + } + + //Map Boundaries + else if (strcmp($tokens[0], "MIN_X") === 0) + { + $this->minX = $tokens[1]; + } + else if (strcmp($tokens[0], "MAX_X") === 0) + { + $this->maxX = $tokens[1]; + } + else if (strcmp($tokens[0], "MIN_Y") === 0) + { + $this->minY = $tokens[1]; + } + else if (strcmp($tokens[0], "MAX_Y") === 0) + { + $this->maxY = $tokens[1]; + } + else if (strcmp($tokens[0], "MIN_Z") === 0) + { + $this->minZ = $tokens[1]; + } + else if (strcmp($tokens[0], "MAX_Z") === 0) + { + $this->maxZ = $tokens[1]; + } + + //Team Spawns + else if (strcmp($tokens[0], "TEAM_NAME") === 0) + { + $currentTeamName = $tokens[1]; + } + else if (strcmp($tokens[0], "TEAM_SPAWNS") === 0) + { + $positions = array(); + + foreach ($tokens as $token) + { + $position = strToPos($token); + + if (is_null($position)) + continue; + + array_push($positions, $position); + } + + $this->mapTeams[$currentTeamName] = $positions; + } + + //Data + else if (strcmp($tokens[0], "DATA_NAME") === 0) + { + $currentDataName = $tokens[1]; + } + else if (strcmp($tokens[0], "DATA_LOCS") === 0) + { + $positions = array(); + + foreach ($tokens as $token) + { + $position = strToPos($token); + + if (is_null($position)) + continue; + + array_push($positions, $position); + } + + $this->mapData[$currentDataName] = $positions; + } + } + + fclose($handle); + } + else + { + print("Error Opening File"); + } + } + + public function getTeams() + { + return $this->mapTeams; + } + + public function getData($key) + { + return $this->worldData[$key]; + } + + protected function strToLoc($str) + { + $tokens = explode(",", $str); + + try + { + return new Position($tokens[0], $tokens[1], $tokens[2], $this->world); + } + catch (Exception $e) + { + print("World Data Read Error: Invalid Position String [" . $str . "]"); + } + + return null; + } + + //This will return a UID for the game + public function getNewGameId() +{ + return rand(0, 999999); //Make this acutally unique +} +} + From bde58fcad93e8be0fb88acf8a639433550d6a274 Mon Sep 17 00:00:00 2001 From: Cheese Date: Sun, 5 Jul 2015 15:14:24 +1000 Subject: [PATCH 20/52] debug file --- Pocket/WorldConfig.dat | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Pocket/WorldConfig.dat diff --git a/Pocket/WorldConfig.dat b/Pocket/WorldConfig.dat new file mode 100644 index 000000000..a0fa54ce4 --- /dev/null +++ b/Pocket/WorldConfig.dat @@ -0,0 +1,28 @@ +MAP_NAME:Cookie Town +MAP_AUTHOR:Mineplex Build Team + +MIN_X:-123 +MAX_X:58 +MIN_Z:-74 +MAX_Z:91 + +MIN_Y:0 +MAX_Y:26 + +TEAM_NAME:Blue +TEAM_SPAWNS:-2,4,-1:-2,4,0:-2,4,1:-2,4,2:-2,4,3:-2,4,4:-2,4,5:-2,4,6:-1,4,-1:-1,4,0:-1,4,1:-1,4,2:-1,4,3:-1,4,4:-1,4,5:-1,4,6:0,4,-1:0,4,0:0,4,1:0,4,2:0,4,3:0,4,4:0,4,5:0,4,6:1,4,-1:1,4,0:1,4,1:1,4,2:1,4,3:1,4,4:1,4,5:1,4,6:2,4,-1:2,4,0:2,4,1:2,4,2:2,4,3:2,4,4:2,4,5:2,4,6:3,4,-1:3,4,0:3,4,1:3,4,2:3,4,3:3,4,4:3,4,5:3,4,6:4,4,-1:4,4,0:4,4,1:4,4,2:4,4,3:4,4,4:4,4,5:4,4,6:5,4,-1:5,4,0:5,4,1:5,4,2:5,4,3:5,4,4:5,4,5:5,4,6: + +TEAM_NAME:Red +TEAM_SPAWNS:-94,2,-10:-94,2,-9:-94,2,-8:-94,2,-7:-94,2,-6:-94,2,-5:-94,2,-4:-94,2,-3:-94,2,-2:-93,2,-10:-93,2,-9:-93,2,-8:-93,2,-7:-93,2,-6:-93,2,-5:-93,2,-4:-93,2,-3:-93,2,-2:-92,2,-10:-92,2,-9:-92,2,-8:-92,2,-7:-92,2,-6:-92,2,-5:-92,2,-4:-92,2,-3:-92,2,-2: + +DATA_NAME:YELLOW +DATA_LOCS:-39,4,7:-39,4,8:-38,4,7:-38,4,8:-33,4,3:-33,4,4:-32,4,2:-32,4,3:-32,4,4:-14,4,-25:-13,4,-26:-13,4,-25:-12,4,-26:-12,4,-25:-11,4,-26:-11,4,-25:-10,4,-25:-8,4,55:-8,4,56:-8,4,57:-7,4,55:-7,4,56:-7,4,57:-7,4,58:-6,4,55:-6,4,56:-6,4,57:-6,4,58:-5,4,69:-5,4,70:-4,4,69:-4,4,70:-2,4,14:-2,4,15:-2,4,16:-1,4,14:-1,4,15:-1,4,16:0,4,14:0,4,15:0,4,16:6,4,-31:7,4,-31:8,4,-31:38,4,35:38,4,36:38,4,37:39,4,35:39,4,36:39,4,37: + +DATA_NAME:BLACK +DATA_LOCS:-94,4,-1:-94,4,0:-94,4,1:-93,4,-1:-93,4,0:-93,4,1:-92,4,-1:-92,4,0:-92,4,1: + +DATA_NAME:PINK +DATA_LOCS:-37,4,7:-37,4,8:-36,4,-16:-36,4,-15:-36,4,-14:-36,4,7:-36,4,8:-35,4,-16:-35,4,-15:-35,4,-14:-34,4,-16:-34,4,-15:-34,4,-14:-3,4,81:-3,4,82:-2,4,80:-2,4,81:-2,4,82:-2,4,83:-1,4,80:-1,4,81:-1,4,82:-1,4,83:0,4,43:1,4,43:2,4,43:3,4,43:3,4,47:3,4,48:4,4,43:4,4,47:4,4,48:6,4,-32:7,4,-32:7,4,-7:7,4,-6:8,4,-32:8,4,-7:8,4,-6:9,4,-8:9,4,-7:11,4,69:11,4,70:11,4,71:12,4,69:12,4,71:13,4,70:29,4,42:29,4,43:29,4,44:30,4,42:30,4,43:30,4,44:31,4,42:31,4,43:31,4,44: + +DATA_NAME:RED +DATA_LOCS:-96,5,4:-93,5,5:-90,5,4: \ No newline at end of file From e24890d292790b0a821fac115113762dfb134c69 Mon Sep 17 00:00:00 2001 From: Cheese Date: Sun, 5 Jul 2015 15:26:56 +1000 Subject: [PATCH 21/52] fixed some buggies --- .../game/components/world/WorldComponent.php | 62 +++++++------------ 1 file changed, 23 insertions(+), 39 deletions(-) diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/world/WorldComponent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/world/WorldComponent.php index 72aefb56a..22daaf0fa 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/world/WorldComponent.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/world/WorldComponent.php @@ -26,19 +26,13 @@ class WorldComponent implements Listener private $world; private $worldName; - private $mapName; private $mapAuthor; private $mapTeams = array(); private $mapData = array(); - private $minX = -256; - private $maxX = 256; - private $minY = -256; - private $maxY = 256; - private $minZ = -256; - private $maxZ = 256; + private $mapSettings = array(); public function __construct(Arena $arena) { @@ -91,43 +85,28 @@ class WorldComponent implements Listener { $this->mapName = $tokens[1]; } - else if (strcmp($tokens[0], "MAP_AUTHOR") === 0) + elseif (strcmp($tokens[0], "MAP_AUTHOR") === 0) { $this->mapAuthor = $tokens[1]; } //Map Boundaries - else if (strcmp($tokens[0], "MIN_X") === 0) + elseif (strcmp($tokens[0], "MIN_X") === 0 || + strcmp($tokens[0], "MAX_X") === 0 || + strcmp($tokens[0], "MIN_Y") === 0 || + strcmp($tokens[0], "MAX_Y") === 0 || + strcmp($tokens[0], "MIN_Z") === 0 || + strcmp($tokens[0], "MAX_Z") === 0) { - $this->minX = $tokens[1]; - } - else if (strcmp($tokens[0], "MAX_X") === 0) - { - $this->maxX = $tokens[1]; - } - else if (strcmp($tokens[0], "MIN_Y") === 0) - { - $this->minY = $tokens[1]; - } - else if (strcmp($tokens[0], "MAX_Y") === 0) - { - $this->maxY = $tokens[1]; - } - else if (strcmp($tokens[0], "MIN_Z") === 0) - { - $this->minZ = $tokens[1]; - } - else if (strcmp($tokens[0], "MAX_Z") === 0) - { - $this->maxZ = $tokens[1]; + $this->mapSettings[$tokens[0]] = $tokens[1]; } //Team Spawns - else if (strcmp($tokens[0], "TEAM_NAME") === 0) + elseif (strcmp($tokens[0], "TEAM_NAME") === 0) { $currentTeamName = $tokens[1]; } - else if (strcmp($tokens[0], "TEAM_SPAWNS") === 0) + elseif (strcmp($tokens[0], "TEAM_SPAWNS") === 0) { $positions = array(); @@ -145,11 +124,11 @@ class WorldComponent implements Listener } //Data - else if (strcmp($tokens[0], "DATA_NAME") === 0) + elseif (strcmp($tokens[0], "DATA_NAME") === 0) { $currentDataName = $tokens[1]; } - else if (strcmp($tokens[0], "DATA_LOCS") === 0) + elseif (strcmp($tokens[0], "DATA_LOCS") === 0) { $positions = array(); @@ -180,9 +159,14 @@ class WorldComponent implements Listener return $this->mapTeams; } + public function getSetting($key) + { + return $this->mapSettings[$key]; + } + public function getData($key) { - return $this->worldData[$key]; + return $this->mapData[$key]; } protected function strToLoc($str) @@ -199,12 +183,12 @@ class WorldComponent implements Listener } return null; - } + } //This will return a UID for the game public function getNewGameId() -{ - return rand(0, 999999); //Make this acutally unique -} + { + return rand(0, 999999); //Make this acutally unique + } } From c7d758c8d8df020c608fa666ac3d7c7cb1723c28 Mon Sep 17 00:00:00 2001 From: Cheese Date: Sun, 5 Jul 2015 17:50:18 +1000 Subject: [PATCH 22/52] fixed UpdateEvent added WorldComponent --- .../Mineplex/src/mineplex/plugin/Main.php | 12 +- .../game/components/world/WorldComponent.php | 123 +++++++++++++++--- .../plugin/core/updater/UpdateEvent.php | 10 +- .../plugin/core/updater/UpdateType.php | 49 ++++--- .../mineplex/plugin/core/updater/Updater.php | 17 ++- 5 files changed, 160 insertions(+), 51 deletions(-) diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php index fec53f2c5..b7992596c 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php @@ -3,11 +3,12 @@ namespace mineplex\plugin; use mineplex\plugin\bench\arenas\MultiGameArena; +use mineplex\plugin\bench\game\components\world\WorldComponent; use mineplex\plugin\bench\game\factory\TestGameFactory; +use mineplex\plugin\core\updater\Updater; use pocketmine\event\Listener; use pocketmine\event\player\PlayerJoinEvent; use pocketmine\event\player\PlayerLoginEvent; -use pocketmine\event\player\PlayerQuitEvent; use pocketmine\plugin\PluginBase; use mineplex\plugin\bench\arenas\Arena; use pocketmine\Server; @@ -16,23 +17,24 @@ class Main extends PluginBase implements Listener { /** @var Arena */ private $arena; + private $test; public function onEnable() { - $this->arena = new MultiGameArena($this, new TestGameFactory()); Server::getInstance()->getPluginManager()->registerEvents($this, $this); - //$this->getServer()->getScheduler()->scheduleRepeatingTask(new TickTask($this), 1); + $this->test = new WorldComponent($this->arena); //$this->getServer()->getPluginManager()->registerEvents($this, $this); - //new Updater($this); + + new Updater($this); } public function onLogin(PlayerLoginEvent $event) { if ($this->arena->canJoin($event->getPlayer())) - retun; + return; $event->setKickMessage("Unable to join game!"); $event->setCancelled(); diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/world/WorldComponent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/world/WorldComponent.php index 22daaf0fa..0fbf814ee 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/world/WorldComponent.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/world/WorldComponent.php @@ -9,12 +9,20 @@ namespace mineplex\plugin\bench\game\components\world; use mineplex\plugin\bench\arenas\Arena; +use mineplex\plugin\bench\game\components\world\event\WorldLoadFailEvent; +use mineplex\plugin\bench\game\components\world\event\WorldLoadSuccessEvent; +use mineplex\plugin\util\UtilString; +use mineplex\plugin\core\updater\UpdateEvent; +use mineplex\plugin\core\updater\UpdateType; +use pocketmine\event\level\LevelUnloadEvent; +use pocketmine\event\player\PlayerJoinEvent; use pocketmine\event\Listener; use pocketmine\level\Position; -use pocketmine\math\Vector3; use pocketmine\Server; +use pocketmine\Player; -//require_once __DIR__ . '\GameState.php'; +use ZipArchive; +use Exception; class WorldComponent implements Listener { @@ -24,44 +32,106 @@ class WorldComponent implements Listener private $gameFolder; private $world; - private $worldName; private $mapName; private $mapAuthor; private $mapTeams = array(); private $mapData = array(); - private $mapSettings = array(); + private $posTest = null; + private $player = null; + public function __construct(Arena $arena) { $this->arena = $arena; - $this->gameId = getNewGameId(); - $this->gameFolder = "Game" . $this->gameId . "_" . $this->worldName; + $this->gameId = $this->getNewGameId(); Server::getInstance()->getPluginManager()->registerEvents($this, $arena->getPlugin()); + + $this->loadWorld("Super Smash Mobs"); } - private function loadWorld($worldName) + //This is just some wierd testiong. Ignore it :P +// public function onJoin(PlayerJoinEvent $event) +// { +// $this->player = $event->getPlayer(); +// } +// +// public function onEvent(UpdateEvent $event) +// { +// if (is_null($this->player)) +// return; +// +// if ($event->isTiming(UpdateType::S8)) +// { +// $this->player->teleport($this->posTest); +// +// print("Teleporting " . $this->player->getName() . " to...\n"); +// +// $this->player = null; +// } +// } + + private function loadWorld($gameName) { - $this-$worldName = $worldName; + $files = scandir('../update/maps/' . $gameName . '/'); - //Do this Async? - if ($this->arena->getPlugin()->getServer()->loadLevel($worldName)) + $maps = array(); + + foreach ($files as $file) { - $this->world = $this->arena->getPlugin()->getServer()->getLevelByName($worldName); + if (UtilString::endsWith($file, ".zip")) + { + array_push($maps, $file); + } + } - loadWorldData(); + $worldName = $maps[rand(0, count($maps) - 1)]; + + //Trim .zip + $worldName = substr($worldName, 0, strlen($worldName) - 4); + + print_r($worldName . "\n"); + + $this->gameFolder = "Game" . $this->gameId . "_" . $gameName . "_" . $worldName; + + //Unzip World + $zip = new ZipArchive; + $res = $zip->open('../update/maps/' . $gameName . '/' . $worldName . '.zip'); + if ($res === TRUE) + { + $zip->extractTo('worlds/' . $this->gameFolder . '/'); + $zip->close(); + print("Successfully Extracted: " . $this->gameFolder . "\n"); } else { - print("ERROR LOADING WORLD: " + $worldName); + print("Error Extracting: " . $this->gameFolder . "\n"); + } + + //Load World + if ($this->arena->getPlugin()->getServer()->loadLevel($this->gameFolder)) + { + $this->world = $this->arena->getPlugin()->getServer()->getLevelByName($this->gameFolder); + + $this->loadWorldData(); + + print("Successfully Loaded World: " . $this->gameFolder . "\n"); + + Server::getInstance()->getPluginManager()->callEvent(new WorldLoadSuccessEvent($this->arena)); + } + else + { + print("Error Loading World: " . $this->gameFolder . "\n"); + + Server::getInstance()->getPluginManager()->callEvent(new WorldLoadFailEvent($this->arena)); } } - public function loadWorldData($world) + public function loadWorldData() { $handle = fopen("WorldConfig.dat", "r"); if ($handle) @@ -110,13 +180,15 @@ class WorldComponent implements Listener { $positions = array(); - foreach ($tokens as $token) + for ($x=1 ; $xstrToPos($tokens[$x]); if (is_null($position)) continue; + $this->posTest = $position; + array_push($positions, $position); } @@ -132,9 +204,9 @@ class WorldComponent implements Listener { $positions = array(); - foreach ($tokens as $token) + for ($x=1 ; $xstrToPos($tokens[$x]); if (is_null($position)) continue; @@ -150,7 +222,7 @@ class WorldComponent implements Listener } else { - print("Error Opening File"); + print("Error Opening File."); } } @@ -169,8 +241,17 @@ class WorldComponent implements Listener return $this->mapData[$key]; } - protected function strToLoc($str) + public function getPosition() { + return $this->getTeams()[0][0]; + } + + + protected function strToPos($str) + { + if (strlen($str) < 5) + return null; + $tokens = explode(",", $str); try @@ -179,7 +260,7 @@ class WorldComponent implements Listener } catch (Exception $e) { - print("World Data Read Error: Invalid Position String [" . $str . "]"); + print("World Data Read Error: Invalid Position String [" . $str . "]\n"); } return null; diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateEvent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateEvent.php index d8d552dc4..f45e103d6 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateEvent.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateEvent.php @@ -30,6 +30,14 @@ class UpdateEvent extends Event public function isTiming($type) { - return in_array(type, $this->updateTypes); + foreach ($this->updateTypes as $updateType) + { + if ($updateType->isTiming($type)) + { + return true; + } + } + + return false; } } \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateType.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateType.php index ad92a0389..06c92c160 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateType.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateType.php @@ -12,26 +12,45 @@ namespace mineplex\plugin\core\updater; class UpdateType { const M64 = 3840000; - conSt M32 = 1920000; - conSt M16 = 960000; - conSt M8 = 480000; - conSt M4 = 240000; - conSt M2 = 120000; - conSt M1 = 60000; - conSt S32 = 32000; - conSt S16 = 16000; - conSt S8 = 8000; - conSt S4 = 4000; - conSt S2 = 2000; - conSt S1 = 1000; - conSt MS500 = 500; - conSt MS250 = 250; - conSt MS125 = 125; + const M32 = 1920000; + const M16 = 960000; + const M8 = 480000; + const M4 = 240000; + const M2 = 120000; + const M1 = 60000; + const S32 = 32000; + const S16 = 16000; + const S8 = 8000; + const S4 = 4000; + const S2 = 2000; + const S1 = 1000; + const MS500 = 500; + const MS250 = 250; + const MS125 = 125; public $time; + private $lastTrigger = 0; + public function __construct($time=0) { $this->time = $time; } + + public function canTrigger() + { + if (round(microtime(true) * 1000) - $this->lastTrigger > $this->time) + { + $this->lastTrigger = round(microtime(true) * 1000); + return true; + } + + return false; + } + + public function isTiming($timing) + { + return $this->time === $timing; + } + } \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php index 57089225b..9fd2d4735 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php @@ -8,13 +8,13 @@ namespace mineplex\plugin\core\updater; +use mineplex\plugin\core\updater\UpdateType; use pocketmine\plugin\PluginBase; use pocketmine\scheduler\PluginTask; class Updater extends PluginTask { private $plugin; - private $last; private $updateTypes; public function __construct(PluginBase $host) @@ -47,14 +47,13 @@ class Updater extends PluginTask { $updateTypes = array(); - $timeSpent = round(microtime(true) * 1000) - $this->last; - $this->last = round(microtime(true) * 1000); - - foreach ($this->updateTypes as &$updateType) { - if ($timeSpent >= $updateType->time) { - array_push($updateTypes, $updateType); - } - } + foreach ($this->updateTypes as &$updateType) + { + if ($updateType->canTrigger()) + { + array_push($updateTypes, $updateType); + } + } //Call Event $this->plugin->getServer()->getPluginManager()->callEvent(new UpdateEvent($currentTick, $updateTypes)); } From b8b12d7f170c3feece3bb140270596b00b83b1e3 Mon Sep 17 00:00:00 2001 From: Aaron Brock Date: Sun, 5 Jul 2015 03:52:35 -0400 Subject: [PATCH 23/52] LobbyComponent.php added Signed-off-by: Aaron Brock --- .../Mineplex/src/mineplex/plugin/Main.php | 2 +- .../feature/GameStateFeatureManager.php | 11 +- .../feature/features/NoBlockBreak.php | 6 +- .../game/components/lobby/LobbyComponent.php | 161 ++++++++++++++++++ .../bench/game/games/sg/SurvivalGames.php | 9 +- 5 files changed, 176 insertions(+), 13 deletions(-) create mode 100644 Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/lobby/LobbyComponent.php diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php index fec53f2c5..4e8305fa4 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/Main.php @@ -32,7 +32,7 @@ class Main extends PluginBase implements Listener public function onLogin(PlayerLoginEvent $event) { if ($this->arena->canJoin($event->getPlayer())) - retun; + return; $event->setKickMessage("Unable to join game!"); $event->setCancelled(); diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/GameStateFeatureManager.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/GameStateFeatureManager.php index 6564c99fb..8bd247929 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/GameStateFeatureManager.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/GameStateFeatureManager.php @@ -61,23 +61,20 @@ class GameStateFeatureManager implements Listener { 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) { - if (!$feature->isEnabled()) - $feature->enable(); - } - foreach ($toDisable as $feature) { if ($feature->isEnabled()) $feature->disable(); } + foreach ($toEnable as $feature) { + if (!$feature->isEnabled()) + $feature->enable(); + } } public function onEnd(ArenaEndEvent $event) diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php index 15344a34e..ed7398b0d 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/feature/features/NoBlockBreak.php @@ -17,13 +17,13 @@ use pocketmine\Server; class NoBlockBreak implements Feature, Listener { - /** @var Arena */ + /** @var Arena */ private $arena; - /** @var int[] */ + /** @var int[] */ private $ids = []; - /** @var bool */ + /** @var bool */ private $black; /** @var bool */ diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/lobby/LobbyComponent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/lobby/LobbyComponent.php new file mode 100644 index 000000000..044279afd --- /dev/null +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/lobby/LobbyComponent.php @@ -0,0 +1,161 @@ +getDefaultLevel(); + + $world->setTime(6000); + $world->stopTime(); + + $this->worldName = $world->getName(); + + $this->arena = $arena; + $this->duringLobbyGameState = new DuringLobbyGameState($arena); + + Server::getInstance()->getPluginManager()->registerEvents($this, $arena->getPlugin()); + } + + public function onBlockBreak(BlockBreakEvent $event) + { + if ($event->getBlock()->getLevel()->getName() != $this->worldName) + return; + $event->setCancelled(); + } + + + public function gameStateChange(GameStateChangeEvent $event) + { + if ($event->getArena() !== $this->arena) + return; + + if ($event->getToGameState() == GameState::LOBBY) { + if (!$this->duringLobbyGameState->isEnabled()) + { + $this->duringLobbyGameState->enable(); + } + } + elseif ($event->getFromGameState() == GameState::LOBBY) + { + if ($this->duringLobbyGameState->isEnabled()) + { + $this->duringLobbyGameState->disable(); + } + } + + } + + public function onGameEnd(ArenaEndEvent $event) + { + if ($event->getArena() !== $this->arena) + return; + + HandlerList::unregisterAll($this); + if ($this->duringLobbyGameState->isEnabled()) + $this->duringLobbyGameState->disable(); + } +} + +class DuringLobbyGameState implements Feature, Listener { + + private $arena; + + /** @var bool */ + private $enabled = false; + + public function __construct(Arena $arena) + { + $this->arena = $arena; + } + + + function onDamage(EntityDamageEvent $event) + { + if (!in_array($event->getEntity(), $this->arena->getPlayers())) + return; + + $event->setCancelled(); + } + + function onDrop(PlayerDropItemEvent $event) + { + if (!in_array($event->getPlayer(), $this->arena->getPlayers())) + return; + $event->setCancelled(); + } + + function onPickUp(InventoryPickupItemEvent $event) + { + if (!in_array($event->getInventory()->getHolder(), $this->arena->getPlayers())) + return; + + $event->setCancelled(); + } + + function onBowShoot(EntityShootBowEvent $event) + { + if (!in_array($event->getEntity(), $this->arena->getPlayers())) + return; + + $event->setCancelled(); + } + + function isEnabled() + { + return $this->enabled; + } + + function enable() + { + Server::getInstance()->broadcastMessage("Enabled!"); + $this->enabled = true; + Server::getInstance()->getPluginManager()->registerEvents($this, $this->arena->getPlugin()); + } + + function disable() + { + Server::getInstance()->broadcastMessage("Disabled!"); + $this->enabled = false; + HandlerList::unregisterAll($this); + } +} \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/sg/SurvivalGames.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/sg/SurvivalGames.php index 21066e32d..1f28552e1 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/sg/SurvivalGames.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/games/sg/SurvivalGames.php @@ -13,6 +13,7 @@ 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\components\lobby\LobbyComponent; use mineplex\plugin\bench\game\Game; use mineplex\plugin\bench\arenas\Arena; use mineplex\plugin\bench\game\components\feature\Feature; @@ -24,16 +25,20 @@ class SurvivalGames implements Game { { $gameStateComponent = new GameStateComponent($arena); - $noBlockBreak = new NoBlockBreak($arena, array(Item::GRASS)); + $noBlockBreak = new NoBlockBreak($arena); + $someBlockBreak = new NoBlockBreak($arena, array(Item::GRASS)); /** @var Feature[][] $features */ $features = array( GameState::LOBBY => array($noBlockBreak), GameState::PRE_GAME => array($noBlockBreak), + GameState::GAME => array($someBlockBreak), GameState::POST_GAME => array($noBlockBreak) ); - new GameStateFeatureManager($arena, $features); + new LobbyComponent($arena); + + //new GameStateFeatureManager($arena, $features); new GameStateCountdown($arena, $gameStateComponent, 20, GameState::LOBBY, GameState::PRE_GAME); From 7b73f73561b7abbe85530a2abb35a2968f879139 Mon Sep 17 00:00:00 2001 From: Aaron Brock Date: Sun, 5 Jul 2015 03:58:46 -0400 Subject: [PATCH 24/52] Switched updateTypes to use the key instead of the value. Signed-off-by: Aaron Brock --- .../bench/game/components/lobby/LobbyComponent.php | 2 +- .../src/mineplex/plugin/core/updater/UpdateEvent.php | 10 +--------- .../src/mineplex/plugin/core/updater/Updater.php | 2 +- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/lobby/LobbyComponent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/lobby/LobbyComponent.php index 044279afd..43a3941a4 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/lobby/LobbyComponent.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/bench/game/components/lobby/LobbyComponent.php @@ -41,7 +41,7 @@ class LobbyComponent implements Listener { */ public function __construct(Arena $arena, $world = null) { - + if ($world == null) $world = Server::getInstance()->getDefaultLevel(); diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateEvent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateEvent.php index f45e103d6..942455136 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateEvent.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/UpdateEvent.php @@ -30,14 +30,6 @@ class UpdateEvent extends Event public function isTiming($type) { - foreach ($this->updateTypes as $updateType) - { - if ($updateType->isTiming($type)) - { - return true; - } - } - - return false; + return (isset($this->updateTypes[$type]) || array_key_exists($type, $this->updateTypes)); } } \ No newline at end of file diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php index 9fd2d4735..d843920fc 100644 --- a/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php +++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/core/updater/Updater.php @@ -51,7 +51,7 @@ class Updater extends PluginTask { if ($updateType->canTrigger()) { - array_push($updateTypes, $updateType); + $updateTypes[$updateType] = 1; } } //Call Event From abaa0ddee88c35f299fe8a341d4912858170ba0b Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Sun, 5 Jul 2015 13:30:16 -0500 Subject: [PATCH 25/52] Level for Bobby --- Plugins/.idea/compiler.xml | 1 + .../src/mineplex/core/achievement/AchievementManager.java | 2 ++ 2 files changed, 3 insertions(+) diff --git a/Plugins/.idea/compiler.xml b/Plugins/.idea/compiler.xml index ccd5607c1..2e4d3e99b 100644 --- a/Plugins/.idea/compiler.xml +++ b/Plugins/.idea/compiler.xml @@ -4,6 +4,7 @@