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

Commit c643d41

Browse files
committed
Fix bugs
1 parent 32318e1 commit c643d41

File tree

13 files changed

+131
-12
lines changed

13 files changed

+131
-12
lines changed

src/VectorNetworkProject/TheMix/TheMix.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
use VectorNetworkProject\TheMix\event\game\TheEndGameEvent;
2626
use VectorNetworkProject\TheMix\event\game\ThePlayerStreakEvent;
2727
use VectorNetworkProject\TheMix\event\gold\ThePlayerAddGoldEvent;
28+
use VectorNetworkProject\TheMix\event\level\TheItemSpawnEvent;
2829
use VectorNetworkProject\TheMix\event\level\TheLevelUpEvent;
2930
use VectorNetworkProject\TheMix\event\level\ThePlayerAddXpEvent;
3031
use VectorNetworkProject\TheMix\event\player\ThePlayerInteractEvent;
@@ -116,5 +117,6 @@ private function registerEvents(): void
116117
$plm->registerEvents(new ThePlayerAddXpEvent(), $this);
117118
$plm->registerEvents(new BlockReGeneratorEvent(), $this);
118119
$plm->registerEvents(new ThePlayerInteractEvent(), $this);
120+
$plm->registerEvents(new TheItemSpawnEvent(), $this);
119121
}
120122
}

src/VectorNetworkProject/TheMix/event/block/BlockReGeneratorEvent.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public function event(BlockBreakEvent $event): void
2424
$block = $event->getBlock();
2525
$inventory = $event->getPlayer()->getInventory();
2626
if (DefaultConfig::isDev() || $block->getLevel()->getName() !== DefaultConfig::getStageLevelName() || TheEndGameEvent::isFinish()) return;
27+
$event->setDrops([]);
2728
switch ($block->getId()) {
2829
case Block::MELON_BLOCK:
2930
$inventory->addItem(Item::get(Item::MELON, 0, 16));

src/VectorNetworkProject/TheMix/event/block/TheBlockBreakEvent.php

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
namespace VectorNetworkProject\TheMix\event\block;
1010

1111
use InkoHX\GoldLibrary\GoldAPI;
12+
use InkoHX\LeveLibrary\LevelAPI;
1213
use pocketmine\event\block\BlockBreakEvent;
1314
use pocketmine\event\Listener;
1415
use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
@@ -39,14 +40,22 @@ public function event(BlockBreakEvent $event)
3940
$event->setCancelled();
4041
}
4142
if (!DefaultConfig::isDev()) {
43+
if (RedTeamManager::getListCount() < 1 || BlueTeamManager::getListCount() < 1) {
44+
$player->sendMessage("プレイヤーが足りないのでコアを破壊する事が出来ません。");
45+
$event->setCancelled();
46+
return;
47+
}
4248
if (RedCoreManager::isCore($block)) {
4349
$event->setCancelled();
4450
if (RedTeamManager::isJoined($player)) {
4551
return;
4652
}
4753
RedCoreManager::reduceHP(1, $player);
48-
GoldAPI::addGold($player, 30);
49-
$block->getLevel()->broadcastLevelSoundEvent($block->asVector3(), LevelSoundEventPacket::SOUND_RANDOM_ANVIL_USE, mt_rand(1, 5));
54+
GoldAPI::addGold($player, 15);
55+
LevelAPI::Auto($player, 10);
56+
Server::getInstance()->broadcastMessage("{$player->getNameTag()}§fが§cRED§fのコアを破壊している!");
57+
Server::getInstance()->getLogger()->info("{$player->getNameTag()}§fが§cRED§fのコアを破壊している!");
58+
$block->getLevel()->broadcastLevelSoundEvent($block->asVector3(), LevelSoundEventPacket::SOUND_RANDOM_ANVIL_USE);
5059
foreach (Server::getInstance()->getOnlinePlayers() as $player) {
5160
LevelSounds::NotePiano($player, 20);
5261
}
@@ -56,8 +65,11 @@ public function event(BlockBreakEvent $event)
5665
return;
5766
}
5867
BlueCoreManager::reduceHP(1, $player);
59-
GoldAPI::addGold($player, 30);
60-
$block->getLevel()->broadcastLevelSoundEvent($block->asVector3(), LevelSoundEventPacket::SOUND_RANDOM_ANVIL_USE, mt_rand(1, 5));
68+
GoldAPI::addGold($player, 15);
69+
LevelAPI::Auto($player, 10);
70+
Server::getInstance()->broadcastMessage("{$player->getNameTag()}§fが§bBLUE§fのコアを破壊している!");
71+
Server::getInstance()->getLogger()->info("{$player->getNameTag()}§fが§cRED§fのコアを破壊している!");
72+
$block->getLevel()->broadcastLevelSoundEvent($block->asVector3(), LevelSoundEventPacket::SOUND_RANDOM_ANVIL_USE);
6173
foreach (Server::getInstance()->getOnlinePlayers() as $player) {
6274
LevelSounds::NotePiano($player, 20);
6375
}

src/VectorNetworkProject/TheMix/event/entity/TheEntityDamageEvent.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,12 @@
1414
use pocketmine\event\entity\EntityDamageEvent;
1515
use pocketmine\event\Listener;
1616
use pocketmine\Player;
17+
use pocketmine\Server;
1718
use VectorNetworkProject\TheMix\event\game\TheEndGameEvent;
19+
use VectorNetworkProject\TheMix\game\corepvp\blue\BlueTeamManager;
20+
use VectorNetworkProject\TheMix\game\corepvp\red\RedTeamManager;
1821
use VectorNetworkProject\TheMix\game\corepvp\SpawnManager;
22+
use VectorNetworkProject\TheMix\game\item\ItemManager;
1923
use VectorNetworkProject\TheMix\game\streak\Streak;
2024

2125
class TheEntityDamageEvent implements Listener
@@ -36,23 +40,43 @@ public function event(EntityDamageEvent $event)
3640
if ($event->getCause() === EntityDamageEvent::CAUSE_FALL) {
3741
return;
3842
}
43+
if ($entity->getLevel()->getName() === Server::getInstance()->getDefaultLevel()->getName()) $event->setCancelled();
3944
if ($event instanceof EntityDamageByEntityEvent) {
4045
$event->setCancelled();
46+
ItemManager::DropItem($entity);
4147
SpawnManager::PlayerReSpawn($entity);
4248
Streak::resetStreak($entity);
4349
$damager = $event->getDamager();
4450
if ($damager instanceof Player) {
4551
if ($entity->getName() === $damager->getName()) {
52+
Server::getInstance()->broadcastMessage("{$entity->getNameTag()} §fは自滅した。");
4653
return;
4754
}
4855
Streak::addStreak($damager);
4956
GoldAPI::addGold($damager, mt_rand(10, 15));
5057
LevelAPI::Auto($damager, mt_rand(10, 15));
58+
Server::getInstance()->broadcastMessage("{$damager->getNameTag()} §fが {$entity->getNameTag()} §fを倒した。");
5159
}
5260
} else {
5361
$event->setCancelled();
5462
Streak::resetStreak($entity);
63+
ItemManager::DropItem($entity);
5564
SpawnManager::PlayerReSpawn($entity);
65+
Server::getInstance()->broadcastMessage("{$entity->getNameTag()} §fは自滅した。");
66+
}
67+
}
68+
69+
public function BlockTeamPvP(EntityDamageEvent $event)
70+
{
71+
if ($event instanceof EntityDamageByEntityEvent) {
72+
$entity = $event->getEntity();
73+
$damager = $event->getDamager();
74+
if (!$entity instanceof Player && !$damager instanceof Player) return;
75+
if (BlueTeamManager::isJoined($entity) === true && BlueTeamManager::isJoined($damager) === true) {
76+
$event->setCancelled();
77+
} elseif (RedTeamManager::isJoined($entity) === true && RedTeamManager::isJoined($damager) === true) {
78+
$event->setCancelled();
79+
}
5680
}
5781
}
5882
}

src/VectorNetworkProject/TheMix/event/game/TheEndGameEvent.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
use InkoHX\GoldLibrary\GoldAPI;
1212
use pocketmine\event\Listener;
13+
use pocketmine\Player;
1314
use pocketmine\Server;
1415
use VectorNetworkProject\TheMix\game\corepvp\blue\BlueTeamManager;
1516
use VectorNetworkProject\TheMix\game\corepvp\red\RedTeamManager;
@@ -33,6 +34,7 @@ public function event(GameWinEvent $event)
3334
self::setFinish(true);
3435
foreach (Server::getInstance()->getOnlinePlayers() as $player) {
3536
if ($player->getLevel()->getName() === DefaultConfig::getStageLevelName()) {
37+
$player->setGamemode(Player::ADVENTURE);
3638
$player->setFlying(true);
3739
$player->getInventory()->clearAll();
3840
}
@@ -49,8 +51,8 @@ public function event(GameWinEvent $event)
4951
TheMix::getInstance()->getScheduler()->scheduleDelayedTask(new ResetGameTask(), 30 * 20);
5052
Server::getInstance()->broadcastTitle('§l§f===< §6決着 §f>===', '§aWin:§l '.$event->getType() === GameWinEvent::WIN_RED ? '§cRED' : '§bBLUE', 20, 5 * 20, 20);
5153
Server::getInstance()->broadcastMessage('===< END GAME >===');
52-
Server::getInstance()->broadcastMessage('§l§eGG!');
53-
Server::getInstance()->broadcastMessage('§lDiscordに参加して遊んだ感想や思った事を書いて下さい');
54+
Server::getInstance()->broadcastMessage('§l§eGG! TheMix v0.0.6-BETA');
55+
Server::getInstance()->broadcastMessage('§lDiscordに参加して遊んだ感想や改善してほしい点などを書いて下さい');
5456
Server::getInstance()->broadcastMessage('§lDiscord: https://discord.gg/EF2G5dh');
5557
Server::getInstance()->broadcastMessage('§c30秒後プレイヤーの再接続とサーバー再起動を開始します。');
5658
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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\level;
10+
11+
12+
use pocketmine\event\entity\ItemSpawnEvent;
13+
use pocketmine\event\Listener;
14+
use pocketmine\item\Item;
15+
use VectorNetworkProject\TheMix\game\DefaultConfig;
16+
17+
class TheItemSpawnEvent implements Listener
18+
{
19+
public function event(ItemSpawnEvent $event)
20+
{
21+
if (DefaultConfig::isDev()) {
22+
return;
23+
}
24+
switch ($event->getEntity()->getItem()->getId()) {
25+
case Item::LEATHER_CAP:
26+
case Item::LEATHER_CHESTPLATE:
27+
case Item::LEATHER_LEGGINGS:
28+
case Item::LEATHER_BOOTS:
29+
$event->getEntity()->kill();
30+
break;
31+
}
32+
}
33+
}

src/VectorNetworkProject/TheMix/event/level/ThePlayerAddXpEvent.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ class ThePlayerAddXpEvent implements Listener
1616
{
1717
public function event(PlayerAddXpEvent $event)
1818
{
19-
$event->getPlayer()->sendMessage("§v{$event->getXp()}XP §fを手に入れた");
19+
$event->getPlayer()->sendMessage("§b{$event->getXp()}XP §fを手に入れた");
2020
}
2121
}

src/VectorNetworkProject/TheMix/event/player/ThePlayerJoinEvent.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use pocketmine\entity\EffectInstance;
1717
use pocketmine\event\Listener;
1818
use pocketmine\event\player\PlayerJoinEvent;
19+
use pocketmine\Server;
1920
use VectorNetworkProject\TheMix\task\UpdateScoreboardTask;
2021
use VectorNetworkProject\TheMix\TheMix;
2122

@@ -24,6 +25,8 @@ class ThePlayerJoinEvent implements Listener
2425
public function event(PlayerJoinEvent $event)
2526
{
2627
$player = $event->getPlayer();
28+
$player->setAllowMovementCheats(true);
29+
$player->teleport(Server::getInstance()->getDefaultLevel()->getSpawnLocation());
2730
$player->addEffect(new EffectInstance(Effect::getEffect(Effect::NIGHT_VISION), 99999999 * 20, 11, false));
2831
$event->setJoinMessage('§7[§a参加§7] §e'.$player->getName().'が参加しました。');
2932
$scoreboard = new Scoreboard(TheMix::getInstance()->getServer()->getPluginManager()->getPlugin('ScoreboardsPE')->getPlugin(), '§l§7=== §6THE §aM§cI§eX §7===', ScoreboardAction::CREATE);

src/VectorNetworkProject/TheMix/event/player/ThePlayerLoginEvent.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
use pocketmine\event\Listener;
1212
use pocketmine\event\player\PlayerLoginEvent;
13-
use pocketmine\Server;
1413
use VectorNetworkProject\TheMix\game\bounty\Bounty;
1514
use VectorNetworkProject\TheMix\game\streak\Streak;
1615

@@ -19,8 +18,6 @@ class ThePlayerLoginEvent implements Listener
1918
public function event(PlayerLoginEvent $event)
2019
{
2120
$player = $event->getPlayer();
22-
$player->setAllowMovementCheats(true);
23-
$player->teleport(Server::getInstance()->getDefaultLevel()->getSpawnLocation());
2421
Bounty::init($player);
2522
Streak::init($player);
2623
}

src/VectorNetworkProject/TheMix/game/corepvp/SpawnManager.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public static function PlayerReSpawn(Player $player)
4141
private static function ReSpawnCooldown(Player $player, Position $position): void
4242
{
4343
$player->addTitle('§l§cYOU DIED', 'あなたは死んでしまった!5秒後行動可能になります。', 20, 100, 20);
44-
$player->teleport(new Position(0, 151, 0, Server::getInstance()->getLevelByName(DefaultConfig::getStageLevelName())));
44+
$player->teleport(new Position(0, 80, 0, Server::getInstance()->getLevelByName(DefaultConfig::getStageLevelName())));
4545
$player->setInvisible();
4646
$player->setGamemode(Player::SPECTATOR);
4747
$player->setHealth(20);

0 commit comments

Comments
 (0)