Skip to content
This repository was archived by the owner on Feb 8, 2019. It is now read-only.

Commit 89b9980

Browse files
committed
Clean up code ;)
1 parent f1ca6ae commit 89b9980

21 files changed

+383
-567
lines changed

src/VectorNetworkProject/TheMix/TheMix.php

Lines changed: 12 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,12 @@
1818
use VectorNetworkProject\TheMix\command\defaults\PingCommand;
1919
use VectorNetworkProject\TheMix\command\defaults\TpsCommand;
2020
use VectorNetworkProject\TheMix\command\Permissions;
21-
use VectorNetworkProject\TheMix\event\block\BlockReGeneratorEvent;
22-
use VectorNetworkProject\TheMix\event\block\TheBlockBreakEvent;
23-
use VectorNetworkProject\TheMix\event\block\TheBlockPlaceEvent;
24-
use VectorNetworkProject\TheMix\event\entity\TheEntityDamageEvent;
25-
use VectorNetworkProject\TheMix\event\game\TheBreakCoreEvent;
26-
use VectorNetworkProject\TheMix\event\game\TheEndGameEvent;
27-
use VectorNetworkProject\TheMix\event\game\ThePlayerStreakEvent;
28-
use VectorNetworkProject\TheMix\event\gold\ThePlayerAddGoldEvent;
29-
use VectorNetworkProject\TheMix\event\level\TheItemSpawnEvent;
30-
use VectorNetworkProject\TheMix\event\level\TheLevelUpEvent;
31-
use VectorNetworkProject\TheMix\event\level\ThePlayerAddXpEvent;
32-
use VectorNetworkProject\TheMix\event\player\ThePlayerInteractEvent;
33-
use VectorNetworkProject\TheMix\event\player\ThePlayerJoinEvent;
34-
use VectorNetworkProject\TheMix\event\player\ThePlayerLoginEvent;
35-
use VectorNetworkProject\TheMix\event\player\ThePlayerQuitEvent;
21+
use VectorNetworkProject\TheMix\event\BlockEventListener;
22+
use VectorNetworkProject\TheMix\event\EntityEventListener;
23+
use VectorNetworkProject\TheMix\event\GameEventListener;
24+
use VectorNetworkProject\TheMix\event\LevelEventListener;
25+
use VectorNetworkProject\TheMix\event\LibraryEventListener;
26+
use VectorNetworkProject\TheMix\event\PlayerEventListener;
3627
use VectorNetworkProject\TheMix\game\DefaultConfig;
3728

3829
class TheMix extends PluginBase
@@ -108,20 +99,11 @@ private function registerCommands(): void
10899
private function registerEvents(): void
109100
{
110101
$plm = $this->getServer()->getPluginManager();
111-
$plm->registerEvents(new ThePlayerLoginEvent(), $this);
112-
$plm->registerEvents(new ThePlayerJoinEvent(), $this);
113-
$plm->registerEvents(new ThePlayerQuitEvent(), $this);
114-
$plm->registerEvents(new TheBlockBreakEvent(), $this);
115-
$plm->registerEvents(new TheBlockPlaceEvent(), $this);
116-
$plm->registerEvents(new TheEntityDamageEvent(), $this);
117-
$plm->registerEvents(new TheEndGameEvent(), $this);
118-
$plm->registerEvents(new ThePlayerStreakEvent(), $this);
119-
$plm->registerEvents(new TheLevelUpEvent(), $this);
120-
$plm->registerEvents(new ThePlayerAddGoldEvent(), $this);
121-
$plm->registerEvents(new ThePlayerAddXpEvent(), $this);
122-
$plm->registerEvents(new BlockReGeneratorEvent(), $this);
123-
$plm->registerEvents(new ThePlayerInteractEvent(), $this);
124-
$plm->registerEvents(new TheItemSpawnEvent(), $this);
125-
$plm->registerEvents(new TheBreakCoreEvent(), $this);
102+
$plm->registerEvents(new BlockEventListener(), $this);
103+
$plm->registerEvents(new EntityEventListener(), $this);
104+
$plm->registerEvents(new GameEventListener(), $this);
105+
$plm->registerEvents(new LevelEventListener(), $this);
106+
$plm->registerEvents(new LibraryEventListener(), $this);
107+
$plm->registerEvents(new PlayerEventListener(), $this);
126108
}
127109
}

src/VectorNetworkProject/TheMix/event/block/BlockReGeneratorEvent.php renamed to src/VectorNetworkProject/TheMix/event/BlockEventListener.php

Lines changed: 79 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,34 @@
66
* Website: https://www.vector-network.tk
77
*/
88

9-
namespace VectorNetworkProject\TheMix\event\block;
9+
namespace VectorNetworkProject\TheMix\event;
10+
1011

1112
use pocketmine\block\Block;
1213
use pocketmine\event\block\BlockBreakEvent;
14+
use pocketmine\event\block\BlockPlaceEvent;
1315
use pocketmine\event\Listener;
1416
use pocketmine\item\Item;
15-
use VectorNetworkProject\TheMix\event\game\TheEndGameEvent;
17+
use pocketmine\Server;
18+
use VectorNetworkProject\TheMix\game\corepvp\blue\BlueCoreManager;
1619
use VectorNetworkProject\TheMix\game\corepvp\blue\BlueTeamManager;
20+
use VectorNetworkProject\TheMix\game\corepvp\red\RedCoreManager;
1721
use VectorNetworkProject\TheMix\game\corepvp\red\RedTeamManager;
1822
use VectorNetworkProject\TheMix\game\DefaultConfig;
23+
use VectorNetworkProject\TheMix\game\event\game\BreakCoreEvent;
1924
use VectorNetworkProject\TheMix\task\BlockReGeneratorTask;
2025
use VectorNetworkProject\TheMix\TheMix;
2126

22-
class BlockReGeneratorEvent implements Listener
27+
class BlockEventListener implements Listener
2328
{
2429
/**
2530
* @param BlockBreakEvent $event
2631
*/
27-
public function event(BlockBreakEvent $event): void
32+
public function onOreBreak(BlockBreakEvent $event): void
2833
{
2934
$block = $event->getBlock();
3035
$inventory = $event->getPlayer()->getInventory();
31-
if (DefaultConfig::isDev() || $block->getLevel()->getName() !== DefaultConfig::getStageLevelName() || TheEndGameEvent::isFinish()) {
36+
if (DefaultConfig::isDev() || $block->getLevel()->getName() !== DefaultConfig::getStageLevelName() || GameEventListener::isFinish()) {
3237
$event->setCancelled();
3338

3439
return;
@@ -82,4 +87,73 @@ public function event(BlockBreakEvent $event): void
8287
}
8388
}
8489
}
90+
91+
/**
92+
* @param BlockBreakEvent $event
93+
*
94+
* @throws \ReflectionException
95+
*/
96+
public function onBlockBreak(BlockBreakEvent $event)
97+
{
98+
$player = $event->getPlayer();
99+
$block = $event->getBlock();
100+
if (GameEventListener::isFinish()) {
101+
$event->setCancelled();
102+
103+
return;
104+
}
105+
if ($player->getLevel()->getName() === Server::getInstance()->getDefaultLevel()->getName()) {
106+
if ($player->isOp()) {
107+
return;
108+
}
109+
$event->setCancelled();
110+
}
111+
if (!DefaultConfig::isDev()) {
112+
if (RedCoreManager::isCore($block)) {
113+
$event->setCancelled();
114+
if (RedTeamManager::isJoined($player)) {
115+
return;
116+
}
117+
$revent = new BreakCoreEvent($player, BreakCoreEvent::RED);
118+
$revent->call();
119+
if (!$revent->isCancelled()) {
120+
RedCoreManager::reduceHP($revent->getDamage(), $player);
121+
}
122+
} elseif (BlueCoreManager::isCore($block)) {
123+
$event->setCancelled();
124+
if (BlueTeamManager::isJoined($player)) {
125+
return;
126+
}
127+
$bevent = new BreakCoreEvent($player, BreakCoreEvent::BLUE);
128+
$bevent->call();
129+
if (!$bevent->isCancelled()) {
130+
BlueCoreManager::reduceHP($bevent->getDamage(), $player);
131+
}
132+
}
133+
}
134+
}
135+
136+
/**
137+
* @param BlockPlaceEvent $event
138+
*/
139+
public function onBlockPlace(BlockPlaceEvent $event)
140+
{
141+
$player = $event->getPlayer();
142+
if (GameEventListener::isFinish()) {
143+
$event->setCancelled();
144+
145+
return;
146+
}
147+
if ($player->getLevel()->getName() === Server::getInstance()->getDefaultLevel()->getName()) {
148+
if ($player->isOp()) {
149+
return;
150+
}
151+
$event->setCancelled();
152+
} elseif ($player->getLevel()->getName() === DefaultConfig::getStageLevelName()) {
153+
if (DefaultConfig::isDev()) {
154+
return;
155+
}
156+
$event->setCancelled();
157+
}
158+
}
85159
}

src/VectorNetworkProject/TheMix/event/entity/TheEntityDamageEvent.php renamed to src/VectorNetworkProject/TheMix/event/EntityEventListener.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
* Website: https://www.vector-network.tk
77
*/
88

9-
namespace VectorNetworkProject\TheMix\event\entity;
9+
namespace VectorNetworkProject\TheMix\event;
10+
1011

1112
use InkoHX\GoldLibrary\GoldAPI;
1213
use InkoHX\LeveLibrary\LevelAPI;
@@ -16,24 +17,23 @@
1617
use pocketmine\item\Item;
1718
use pocketmine\Player;
1819
use pocketmine\Server;
19-
use VectorNetworkProject\TheMix\event\game\TheEndGameEvent;
2020
use VectorNetworkProject\TheMix\game\corepvp\blue\BlueTeamManager;
2121
use VectorNetworkProject\TheMix\game\corepvp\red\RedTeamManager;
2222
use VectorNetworkProject\TheMix\game\corepvp\SpawnManager;
2323
use VectorNetworkProject\TheMix\game\streak\Streak;
2424

25-
class TheEntityDamageEvent implements Listener
25+
class EntityEventListener implements Listener
2626
{
2727
/**
2828
* @param EntityDamageEvent $event
2929
*
3030
* @throws \ReflectionException
3131
*/
32-
public function event(EntityDamageEvent $event)
32+
public function onEntityDamage(EntityDamageEvent $event)
3333
{
3434
$entity = $event->getEntity();
3535
$entity->extinguish();
36-
if (TheEndGameEvent::isFinish()) {
36+
if (GameEventListener::isFinish()) {
3737
$event->setCancelled();
3838

3939
return;
@@ -104,7 +104,7 @@ public function BlockTeamPvP(EntityDamageEvent $event)
104104
*
105105
* @return void
106106
*/
107-
public static function dropItem(Player $player): void
107+
private static function dropItem(Player $player): void
108108
{
109109
$contents = $player->getInventory()->getContents();
110110
foreach ($contents as $slot => $item) {
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
<?php
2+
/**
3+
* Copyright (c) 2018 VectorNetworkProject. All rights reserved. MIT license.
4+
*
5+
* GitHub: https://github.com/VectorNetworkProject/TheMix
6+
* Website: https://www.vector-network.tk
7+
*/
8+
9+
namespace VectorNetworkProject\TheMix\event;
10+
11+
12+
use InkoHX\GoldLibrary\GoldAPI;
13+
use InkoHX\LeveLibrary\LevelAPI;
14+
use pocketmine\event\Listener;
15+
use pocketmine\Player;
16+
use pocketmine\Server;
17+
use pocketmine\utils\TextFormat;
18+
use VectorNetworkProject\TheMix\game\corepvp\blue\BlueTeamManager;
19+
use VectorNetworkProject\TheMix\game\corepvp\red\RedTeamManager;
20+
use VectorNetworkProject\TheMix\game\DefaultConfig;
21+
use VectorNetworkProject\TheMix\game\event\game\BreakCoreEvent;
22+
use VectorNetworkProject\TheMix\game\event\game\GameWinEvent;
23+
use VectorNetworkProject\TheMix\game\event\player\PlayerStreakEvent;
24+
use VectorNetworkProject\TheMix\lib\sound\LevelSounds;
25+
use VectorNetworkProject\TheMix\task\ResetGameTask;
26+
use VectorNetworkProject\TheMix\TheMix;
27+
28+
class GameEventListener implements Listener
29+
{
30+
/** @var bool $finish */
31+
private static $finish = false;
32+
33+
/**
34+
* @param BreakCoreEvent $event
35+
*
36+
* @throws \ErrorException
37+
*/
38+
public function onBreakCore(BreakCoreEvent $event)
39+
{
40+
$player = $event->getPlayer();
41+
if (RedTeamManager::getListCount() < 1 || BlueTeamManager::getListCount() < 1) {
42+
$player->sendMessage(TextFormat::RED.'プレイヤーが足りないのでコアを破壊する事が出来ません。');
43+
$event->setCancelled();
44+
45+
return;
46+
}
47+
switch ($event->getTeam()) {
48+
case BreakCoreEvent::RED:
49+
Server::getInstance()->broadcastMessage("§l§cRED§rのコアが§b{$player->getName()}§rによって攻撃を受けています。");
50+
foreach (Server::getInstance()->getOnlinePlayers() as $player) {
51+
LevelSounds::NotePiano($player);
52+
if (RedTeamManager::isJoined($player)) {
53+
LevelAPI::Auto($player, 5);
54+
GoldAPI::addGold($player, 5);
55+
}
56+
}
57+
break;
58+
case BreakCoreEvent::BLUE:
59+
Server::getInstance()->broadcastMessage("§l§bBLUR§rのコアが§c{$player->getName()}§rによって攻撃を受けています。");
60+
foreach (Server::getInstance()->getOnlinePlayers() as $player) {
61+
LevelSounds::NotePiano($player);
62+
if (BlueTeamManager::isJoined($player)) {
63+
LevelAPI::Auto($player, 5);
64+
GoldAPI::addGold($player, 5);
65+
}
66+
}
67+
break;
68+
default:
69+
throw new \ErrorException('The core was destroyed by a team that does not exist.');
70+
break;
71+
}
72+
}
73+
74+
/**
75+
* @param PlayerStreakEvent $event
76+
*/
77+
public function onStreak(PlayerStreakEvent $event)
78+
{
79+
$player = $event->getPlayer();
80+
switch ($event->getCount()) {
81+
case 5:
82+
case 10:
83+
case 20:
84+
case 30:
85+
case 40:
86+
case 50:
87+
case 60:
88+
case 70:
89+
case 80:
90+
case 90:
91+
case 100:
92+
Server::getInstance()->broadcastMessage("§l§cSTREAK! §r{$player->getName()}{$event->getCount()}回連続でキルしました!");
93+
break;
94+
}
95+
}
96+
97+
/**
98+
* @param GameWinEvent $event
99+
*/
100+
public function event(GameWinEvent $event)
101+
{
102+
if (DefaultConfig::isDev()) {
103+
$event->setCancelled();
104+
105+
return;
106+
}
107+
self::setFinish(true);
108+
foreach (Server::getInstance()->getOnlinePlayers() as $player) {
109+
if ($player->getLevel()->getName() === DefaultConfig::getStageLevelName()) {
110+
$player->setGamemode(Player::ADVENTURE);
111+
$player->setFlying(true);
112+
$player->getInventory()->clearAll();
113+
}
114+
if ($event->getType() === GameWinEvent::WIN_RED) {
115+
if (RedTeamManager::isJoined($player)) {
116+
GoldAPI::addGold($player, 1000);
117+
}
118+
} else {
119+
if (BlueTeamManager::isJoined($player)) {
120+
GoldAPI::addGold($player, 1000);
121+
}
122+
}
123+
}
124+
TheMix::getInstance()->getScheduler()->scheduleDelayedTask(new ResetGameTask(), 30 * 20);
125+
Server::getInstance()->broadcastTitle('§l§f===< §6決着 §f>===', '§aWin:§l '.$event->getType() === GameWinEvent::WIN_RED ? '§cRED' : '§bBLUE', 20, 5 * 20, 20);
126+
Server::getInstance()->broadcastMessage('===< END GAME >===');
127+
Server::getInstance()->broadcastMessage('§l§eGG! TheMix v0.0.8-BETA');
128+
Server::getInstance()->broadcastMessage('§lDiscordに参加して遊んだ感想や改善してほしい点などを書いて下さい!');
129+
Server::getInstance()->broadcastMessage('§lDiscord: https://discord.gg/EF2G5dh');
130+
Server::getInstance()->broadcastMessage('§c30秒後プレイヤーの再接続とサーバー再起動を開始します。');
131+
}
132+
133+
/**
134+
* @param bool $finish
135+
*/
136+
public static function setFinish(bool $finish): void
137+
{
138+
self::$finish = $finish;
139+
}
140+
141+
/**
142+
* @return bool
143+
*/
144+
public static function isFinish(): bool
145+
{
146+
return self::$finish;
147+
}
148+
}

src/VectorNetworkProject/TheMix/event/level/TheItemSpawnEvent.php renamed to src/VectorNetworkProject/TheMix/event/LevelEventListener.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,20 @@
66
* Website: https://www.vector-network.tk
77
*/
88

9-
namespace VectorNetworkProject\TheMix\event\level;
9+
namespace VectorNetworkProject\TheMix\event;
10+
1011

1112
use pocketmine\event\entity\ItemSpawnEvent;
1213
use pocketmine\event\Listener;
1314
use pocketmine\item\Item;
1415
use VectorNetworkProject\TheMix\game\DefaultConfig;
1516

16-
class TheItemSpawnEvent implements Listener
17+
class LevelEventListener implements Listener
1718
{
1819
/**
1920
* @param ItemSpawnEvent $event
2021
*/
21-
public function event(ItemSpawnEvent $event)
22+
public function onItemSpawn(ItemSpawnEvent $event)
2223
{
2324
if (DefaultConfig::isDev()) {
2425
return;

0 commit comments

Comments
 (0)