From 42a28033edb55e352657aca1f3791168fb1db691 Mon Sep 17 00:00:00 2001 From: jasonwynn10 Date: Tue, 1 Aug 2017 14:41:59 -0400 Subject: [PATCH] Compact code and remove unused use statements Correct PhpDoc comments All spacing is not the same Version bump due to new feature and BC breaks --- config.yml | 0 plugin.yml | 13 +- resources/config.yml | 5 +- src/Ad5001/Elytra/Elytra.php | 17 +- src/Ad5001/Elytra/Main.php | 244 ++++++++++------------ src/Ad5001/Elytra/tasks/AdminGotoTask.php | 94 ++------- 6 files changed, 136 insertions(+), 237 deletions(-) delete mode 100644 config.yml diff --git a/config.yml b/config.yml deleted file mode 100644 index e69de29..0000000 diff --git a/plugin.yml b/plugin.yml index 635cee4..e784491 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,9 +1,11 @@ ---- name: Elytra -author: Ad5001 -version: 2.0 -api: [3.0.0-ALPHA1, 3.0.0, 2.0.0] +author: Ad5001 +version: 2.1 +api: + - 3.0.0 + - 3.0.0-ALPHA7 main: Ad5001\Elytra\Main +load: STARTUP commands: opelytra: description: "Make your elytras your wear MAGIC !" @@ -18,5 +20,4 @@ permissions: elytra.getopelytra: default: op elytra.boost: - default: true -... + default: true \ No newline at end of file diff --git a/resources/config.yml b/resources/config.yml index 0a2e668..dee574d 100644 --- a/resources/config.yml +++ b/resources/config.yml @@ -1,5 +1,4 @@ -# Welcome to Elytras 2.x.x config ! - +# Welcome to Elytra 2.x.x config ! # Here configure which block are considered "bouncable", enter their ids. -# Try going on those blocks by usini the elytra and the see the magic. +# Try going on those blocks by using the elytra and the see the magic. bouncable_blocks: [165, 88] \ No newline at end of file diff --git a/src/Ad5001/Elytra/Elytra.php b/src/Ad5001/Elytra/Elytra.php index aa6ba9d..807f261 100644 --- a/src/Ad5001/Elytra/Elytra.php +++ b/src/Ad5001/Elytra/Elytra.php @@ -1,24 +1,11 @@ getServer()->getPluginManager()->registerEvents($this,$this); - $this->getServer()->getScheduler()->scheduleRepeatingTask(new AdminGotoTask($this), 10); + public function onEnable() { + $this->saveDefaultConfig(); + $this->getServer()->getPluginManager()->registerEvents($this, $this); + $this->getServer()->getScheduler()->scheduleRepeatingTask(new AdminGotoTask($this), 10); Item::$list[444] = Elytra::class; - Item::addCreativeItem(new Elytra()); - $this->ops = []; - } + Item::addCreativeItem(new Elytra()); + } + /** + * @priority LOW + * + * @param EntityDamageEvent $event + */ + public function onEntityDamage(EntityDamageEvent $event) { + $damaged = $event->getEntity(); + if($damaged instanceof Player) { + if($event->getCause() == 4 and $damaged->getInventory()->getChestplate()->getId() == 444) { + $event->setCancelled(); + } + } + } - /* - Prevent when someone is falling - @param $event \pocketmine\event\entity\EntityDamageEvent - @return null - */ - public function onEntityDamage(\pocketmine\event\entity\EntityDamageEvent $event) { - if($event->getCause() == 4 && $event->getEntity()->getInventory()->getChestplate()->getId() == 444) { - $event->setCancelled(); - } - } + /** + * @priority LOW + * + * @param PlayerKickEvent $event + */ + public function onPlayerKick(PlayerKickEvent $event) { + if(strpos(strtolower($event->getReason()), "flying") !== false and $event->getPlayer()->getInventory()->getChestplate()->getId() == 444) { + $event->setCancelled(); + } + } + /** + * @priority LOW + * + * @param PlayerMoveEvent $event + */ + public function onPlayerMove(PlayerMoveEvent $event) { + $player = $event->getPlayer(); + if($player->getInventory()->getChestplate()->getId() == 444) { + $flyingUp = false; + // TODO: change Bounding Box of player depending on their angle of flight + for($i = 2; $i > 0; $i--) { + if($player->getLevel()->getBlock(new Vector3(round($player->x), round($player->y) - $i, round($player->z)))->getId() !== 0) { + $flyingUp = true; + } + } + if(isset($this->ops[$player->getName()]) and $flyingUp) { + $player->setMotion(new Vector3($player->getMotion()->x, 3, $player->getMotion()->z)); + } + $flyingUp = false; + for($i = 4; $i > 0; $i--) { + $id = $player->getLevel()->getBlock(new Vector3 (round($player->x), round($player->y) - $i, round($player->z)))->getId(); + if(in_array($id, $this->getConfig()->get("bouncable_blocks",[]))) { + $flyingUp = true; + } + } + if($flyingUp) { + $player->setMotion(new Vector3($player->getMotion()->x, 3, $player->getMotion()->z)); + } + } + } - /* - Prevents the player from being kicked of flyign by using the elytras. - @param $event \pocketmine\event\player\PlayerKickEvent - */ - public function onPlayerKick(\pocketmine\event\player\PlayerKickEvent $event) { - if(strpos($event->getReason(), "Flying is not enabled on this server") !== false && $event->getPlayer()->getInventory()->getChestplate()->getId() == 444) { - $event->setCancelled(); - } - } - - - /* - When a player moves. To make it bounce with elytras. - @param $event \pocketmine\event\player\PlayerMoveEvent - */ - public function onPlayerMove(\pocketmine\event\player\PlayerMoveEvent $event) { - $player = $event->getPlayer(); - if($player->getInventory()->getChestplate()->getId() == 444) { - $flyingup = false; - for($i = 2; $i > 0; $i--) { - if($player->getLevel()->getBlock(new \pocketmine\math\Vector3 (round($player->x), round($player->y) - $i, round($player->z)))->getId() !== 0) { - $flyingup = true; - } - } - if(isset($this->getAdminsModePlayers()[$player->getName()]) && $flyingup) { - $player->setMotion(new \pocketmine\math\Vector3($player->getMotion()->x, 3, $player->getMotion()->z)); - } - $flyingup = false; - for($i = 4; $i > 0; $i--) { - $id = $player->getLevel()->getBlock(new \pocketmine\math\Vector3 (round($player->x), round($player->y) - $i, round($player->z)))->getId(); - if(in_array($id, $this->getConfig()->get("bouncable_blocks"))) { - $flyingup = true; - } - } - if($flyingup) { - $player->setMotion(new \pocketmine\math\Vector3($player->getMotion()->x, 3, $player->getMotion()->z)); - } - } - } - - - /* - Called when one of the defined commands of the plugin has been called - @param $sender \pocketmine\command\CommandSender - @param $cmd \pocketmine\command\Command - @param $label mixed - @param $args array - return bool - */ - public function onCommand(\pocketmine\command\CommandSender $sender, \pocketmine\command\Command $cmd,$label, array $args): bool { - switch($cmd->getName()) { - case "opelytra": - if($sender instanceof Player) { - if(isset($this->ops[$sender->getName()])) { - unset($this->ops[$sender->getName()]); - $sender->sendMessage("§aYou are back to te original elytra !"); - } else { - $this->ops[$sender->getName()] = true; - $sender->sendMessage("§aYou are now in the admin elytra mode ! Go try out your powers !"); - } - } - break; - case "boost": - if($sender instanceof Player && $sender->getInventory()->getChestplate()->getId() == 444) { - if(!isset($args[0])) $args[0] = 2; - $sender->setMotion(new \pocketmine\math\Vector3($sender->getMotion()->x, $args[0], $sender->getMotion()->z)); - } - break; - } - return false; - } - - - /* - Returns players in ADMIN mode - @return array - */ - public function getAdminsModePlayers() : array { - return $this->ops; - } + public function onDataPacket(DataPacketReceiveEvent $ev) { + $packet = $ev->getPacket(); + if($packet instanceof PlayerActionPacket) { + if($packet->action === PlayerActionPacket::ACTION_START_GLIDE) { + $ev->getPlayer()->setDataFlag(Player::DATA_FLAGS, Player::DATA_FLAG_GLIDING, true, Player::DATA_TYPE_BYTE); + }elseif($packet->action === PlayerActionPacket::ACTION_STOP_GLIDE) { + $ev->getPlayer()->setDataFlag(Player::DATA_FLAGS, Player::DATA_FLAG_GLIDING, false, Player::DATA_TYPE_BYTE); + } + } + } + /** + * @param CommandSender $sender + * @param Command $cmd + * @param string $label + * @param array $args + * @return bool + */ + public function onCommand(CommandSender $sender, Command $cmd, string $label, array $args) : bool { + switch($cmd->getName()) { + case "opelytra": + if($sender instanceof Player) { + if(isset($this->ops[$sender->getName()])) { + unset($this->ops[$sender->getName()]); + $sender->sendMessage(TextFormat::GREEN."You are back to the original elytra!"); + } else { + $this->ops[$sender->getName()] = true; + $sender->sendMessage(TextFormat::GREEN."You are now in the admin elytra mode! Go try out your powers!"); + } + } + break; + case "boost": + if($sender instanceof Player and $sender->getInventory()->getChestplate()->getId() == 444) { + if(!isset($args[0])) $args[0] = 2; + $sender->setMotion(new Vector3($sender->getMotion()->x, $args[0], $sender->getMotion()->z)); + } + break; + } + return false; + } } \ No newline at end of file diff --git a/src/Ad5001/Elytra/tasks/AdminGotoTask.php b/src/Ad5001/Elytra/tasks/AdminGotoTask.php index d7a5c2e..01f6017 100644 --- a/src/Ad5001/Elytra/tasks/AdminGotoTask.php +++ b/src/Ad5001/Elytra/tasks/AdminGotoTask.php @@ -1,88 +1,26 @@ main = $main; - - - $this->server = $main->getServer(); - - - } - - - - - public function onRun($tick) { - foreach ($this->server->getOnlinePlayers() as $player) { - - - //Part needed for player's good working - $ref = new \ReflectionClass("pocketmine\\Player"); - $prop = $ref->getProperty("gravity"); - $prop->setAccessible(true); - $prop->setValue($player, 0); - $prop->setAccessible(false); - if($player->getMotion()->y !== 0) { - // echo "{$player->getName()}:" . $player->getMotion()->y . "\n"; - } - } - } - - - - /* - Inverts a number - @param $num int - @return int - */ - public function invert(int $num) : int { - if($num < 0) { - echo $num . " +> " . abs($num) . "\n"; - return abs($num); - } else { - echo $num . " -> " . -$num . "\n"; - return -$num; - } - return 0; - } - - - - + public function __construct(Main $main) { + parent::__construct($main); + } + public function onRun(int $tick) { + foreach ($this->getOwner()->getServer()->getOnlinePlayers() as $player) { + //Part needed for players to fly upwards + $ref = new \ReflectionClass("pocketmine\\Player"); + $prop = $ref->getProperty("gravity"); + $prop->setAccessible(true); + $prop->setValue($player, 0); + $prop->setAccessible(false); + if($player->getMotion()->y !== 0) { + $this->getOwner()->getLogger()->debug("{$player->getName()}'s y motion is {$player->getMotion()->y}"); + } + } + } } \ No newline at end of file