|
1 | 1 | <?php
|
2 | 2 | namespace LaunchPads;
|
3 | 3 |
|
4 |
| -use pocketmine\event\Listener; |
| 4 | +use pocketmine\event\entity\EntityDamageEvent; |
5 | 5 | use pocketmine\event\player\PlayerMoveEvent;
|
| 6 | +use pocketmine\event\Listener; |
| 7 | +use pocketmine\Player; |
6 | 8 |
|
7 | 9 | class EventListener implements Listener {
|
8 | 10 | public function __construct($plugin) {
|
9 | 11 | $this->plugin = $plugin;
|
10 | 12 | }
|
11 | 13 |
|
| 14 | + public function onDamage(EntityDamageEvent $event) { |
| 15 | + $entity = $event->getEntity(); |
| 16 | + $cause = $event->getCause(); |
| 17 | + if($entity instanceof Player && $cause == 4) { |
| 18 | + if(isset($this->plugin->launchpad[strtolower($entity->getName())])) { |
| 19 | + unset($this->plugin->launchpad[strtolower($entity->getName())]); |
| 20 | + $event->setCancelled(); |
| 21 | + } |
| 22 | + } |
| 23 | + } |
| 24 | + |
12 | 25 | public function onMove(PlayerMoveEvent $event) {
|
13 | 26 | $player = $event->getPlayer();
|
14 | 27 | $block = $player->getLevel()->getBlock($player->floor()->subtract(0, 1));
|
15 | 28 | $block2 = $player->getLevel()->getBlock($player->floor()->subtract(0, 2));
|
16 |
| - $launchpads = $this->plugin->getconfig()->get("launchpad"); |
| 29 | + $launchpads = $this->plugin->getConfig()->get("launchpads"); |
| 30 | + $strength = $this->plugin->getConfig()->get("launchpad-strength"); |
17 | 31 | if(in_array($block->getId(), $launchpads)) {
|
18 |
| - if($this->plugin->getconfig()->get("enable-torch-mode")) { |
| 32 | + $this->plugin->launchpad[strtolower($player->getName())] = true; |
| 33 | + if($this->plugin->getConfig()->get("enable-torch-mode")) { |
19 | 34 | if($block2->getId() == 50) {
|
20 | 35 | switch($block2->getDamage()) {
|
21 | 36 | case 2:
|
22 |
| - $player->knockBack($player, 0, -1, 0, 1); |
| 37 | + $player->knockBack($player, 0, -1, 0, $strength); |
23 | 38 | return true;
|
24 | 39 | case 1:
|
25 |
| - $player->knockBack($player, 0, 1, 0, 1); |
| 40 | + $player->knockBack($player, 0, 1, 0, $strength); |
26 | 41 | return true;
|
27 | 42 | case 4:
|
28 |
| - $player->knockBack($player, 0, 0, -1, 1); |
| 43 | + $player->knockBack($player, 0, 0, -1, $strength); |
29 | 44 | return true;
|
30 | 45 | case 3:
|
31 |
| - $player->knockBack($player, 0, 0, 1, 1); |
| 46 | + $player->knockBack($player, 0, 0, 1, $strength); |
32 | 47 | return true;
|
33 | 48 | }
|
34 | 49 | }
|
35 | 50 | }
|
36 | 51 | switch($player->getDirection()) {
|
37 | 52 | case 0:
|
38 |
| - $player->knockBack($player, 0, 1, 0, 1); |
| 53 | + $player->knockBack($player, 0, 1, 0, $strength); |
39 | 54 | return true;
|
40 | 55 | case 1:
|
41 |
| - $player->knockBack($player, 0, 0, 1, 1); |
| 56 | + $player->knockBack($player, 0, 0, 1, $strength); |
42 | 57 | return true;
|
43 | 58 | case 2:
|
44 |
| - $player->knockBack($player, 0, -1, 0, 1); |
| 59 | + $player->knockBack($player, 0, -1, 0, $strength); |
45 | 60 | return true;
|
46 | 61 | case 3:
|
47 |
| - $player->knockBack($player, 0, 0, -1, 1); |
| 62 | + $player->knockBack($player, 0, 0, -1, $strength); |
48 | 63 | return true;
|
49 | 64 | }
|
50 | 65 | }
|
| 66 | + if(isset($this->plugin->launchpad[strtolower($player->getName())])) { |
| 67 | + if(!$block->getId() == 0) { |
| 68 | + unset($this->plugin->launchpad[strtolower($player->getName())]); |
| 69 | + } |
| 70 | + } |
51 | 71 | }
|
52 | 72 | }
|
0 commit comments