From 18c4286394c140a8eb46205c773f299f1ea2af32 Mon Sep 17 00:00:00 2001 From: ZzKino Date: Sun, 29 Nov 2020 17:48:43 +0700 Subject: [PATCH] Some fix and update --- README.md | 33 ++++++++++++++ plugin.yml | 4 +- resources/config.yml | 6 +++ src/phuongaz/EasyWing/Loader.php | 52 ++++++++++++++++++----- src/phuongaz/EasyWing/form/WingsForm.php | 2 +- src/phuongaz/EasyWing/utils/Particles.php | 38 +++++++++++++++++ 6 files changed, 121 insertions(+), 14 deletions(-) create mode 100644 resources/config.yml create mode 100644 src/phuongaz/EasyWing/utils/Particles.php diff --git a/README.md b/README.md index 1c0dead..a559885 100644 --- a/README.md +++ b/README.md @@ -2,4 +2,37 @@ Wing particle plugin for Pocketmine-MP +# Feature + + Add and custom wing in config + + FormAPI Support + +# Example Config +``` +shape: [ +[0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0], +[0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0], +[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], +[1,1,1,1,0,0,0,1,1,0,0,0,1,1,1,1], +[1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1], +[1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1]] + +Wing-Name: "Example Wing" +``` + +# List Particles +``` + 0: space + + 4 : Red Dust + 2: Green Dust + x: Redstone + f: Flame + b: Blue Flame + h: Villager Happy + p: Villager Angry +``` + +# How to get a wing ++ Add permision to player `wing.on.` + ![117837516_1453484918179354_1316757255971479986_n.png](https://www.upsieutoc.com/images/2020/08/18/117837516_1453484918179354_1316757255971479986_n.png) diff --git a/plugin.yml b/plugin.yml index 4d98a60..c4f8ede 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,5 +1,5 @@ name: EasyWing main: phuongaz\EasyWing\Loader author: phuongaz -version: 1.0.2 -api: 3.15.0 \ No newline at end of file +version: 1.0.3 +api: 3.0.0 \ No newline at end of file diff --git a/resources/config.yml b/resources/config.yml new file mode 100644 index 0000000..776cab5 --- /dev/null +++ b/resources/config.yml @@ -0,0 +1,6 @@ +tick-update: 10 #0.5s + +title: "WINGS FORM" + +turn-on: "Turn on wing" +turn-off: "Turn off wing" \ No newline at end of file diff --git a/src/phuongaz/EasyWing/Loader.php b/src/phuongaz/EasyWing/Loader.php index 457c700..d8afcd8 100644 --- a/src/phuongaz/EasyWing/Loader.php +++ b/src/phuongaz/EasyWing/Loader.php @@ -6,7 +6,7 @@ use pocketmine\Player; use phuongaz\EasyWing\task\WingTask; use phuongaz\EasyWing\command\WingsCommand; - +use phuongaz\EasyWing\utils\Particles; use pocketmine\level\particle\{ DustParticle, FlameParticle, @@ -14,8 +14,10 @@ Particle }; use pocketmine\math\Vector3; +use pocketmine\event\Listener; +use pocketmine\event\player\PlayerQuitEvent; -Class Loader extends PluginBase{ +Class Loader extends PluginBase implements Listener{ /** @var array */ private static $equip_players = []; @@ -25,13 +27,25 @@ private static $instance; public function onEnable() :void{ + $this->saveDefaultConfig(); $this->saveResource("wings/example.yml"); foreach(glob($this->getDataFolder(). "wings/*.yml") as $wingPath){ $wingName = pathinfo($wingPath, PATHINFO_FILENAME); self::$wings[$wingName] = yaml_parse_file($wingPath); } self::$instance = $this; - $this->getServer()->getCommandMap()->register("wings", new WingsCommand()); + $this->getServer()->getCommandMap()->register("EasyWing", new WingsCommand()); + $this->getServer()->getPluginManager()->registerEvents($this, $this); + } + + /** + * @param PlayerQuitEvent $event + * + * @return void + */ + public function onQuit(PlayerQuitEvent $event) :void { + $player = $event->getPlayer(); + $this->unEquip($player); } /** @@ -48,6 +62,14 @@ public static function getWings() :array{ return self::$wings; } + /** + * @return array + */ + public function getSetting() :array + { + return yaml_parse_file($this->getDataFolder(). "config.yml"); + } + /** * @param Player $player * @param string $wing @@ -75,8 +97,17 @@ public function parseWing(Vector3 $pos, $character) :Particle{ case "4": $particle = new DustParticle($pos, 179, 0, 0); break; - default: - $particle = new FlameParticle($pos); + case "b": + $particle = new Particles(Particles::BLUE_FLAME, $pos); + break; + case "h": + $particle = new Particles(Particles::VILLAGER_HAPPY, $pos); + break; + case "p": + $particle = new Particles(Particles::VILLAGER_ANGRY, $pos); + break; + case "f": + $particle = new Particles(Particles::FLAME, $pos); break; } return $particle; @@ -94,24 +125,23 @@ public function equipWing(Player $player, string $wing) :void { $shape = self::getWings()[$wing]["shape"]; $lowername = $player->getLowerCaseName(); $wingtask = new WingTask($player, $shape); - if(!isset(self::$equip_players[$lowername])){ + $this->getScheduler()->scheduleRepeatingTask($wingtask, $this->getSetting()["tick-update"]); self::$equip_players[$lowername]["id"] = $wingtask->getTaskId(); self::$equip_players[$lowername]["name"] = $wing; - $player->sendMessage("Turn on $wing wing"); - $this->getScheduler()->scheduleRepeatingTask($wingtask, 5); + $player->sendMessage($this->getSetting()["turn-on"]); return; } if(self::$equip_players[$lowername]["name"] == $wing){ - $player->sendMessage("Turn off $wing wing"); + $player->sendMessage($this->getSetting()["turn-off"]); $this->unEquip($player); return; }else{ $this->unEquip($player); + $this->getScheduler()->scheduleRepeatingTask($wingtask, $this->getSetting()["tick-update"]); self::$equip_players[$lowername]["id"] = $wingtask->getTaskId(); self::$equip_players[$lowername]["name"] = $wing; - $player->sendMessage("Turn on $wing wing"); - $this->getScheduler()->scheduleRepeatingTask($wingtask, 5); + $player->sendMessage($this->getSetting()["turn-on"]); } } diff --git a/src/phuongaz/EasyWing/form/WingsForm.php b/src/phuongaz/EasyWing/form/WingsForm.php index 19c2ff0..8d89e55 100644 --- a/src/phuongaz/EasyWing/form/WingsForm.php +++ b/src/phuongaz/EasyWing/form/WingsForm.php @@ -33,7 +33,7 @@ public function send() :void{ $wing = array_keys(Loader::getWings())[$data]; $loader->equipWing($player, $wing); }); - $form->setTitle("WINGS FORM"); + $form->setTitle($loader->getSetting()["title"]); foreach($loader->getWings() as $wingName){ $form->addButton($wingName["Wing-Name"]); } diff --git a/src/phuongaz/EasyWing/utils/Particles.php b/src/phuongaz/EasyWing/utils/Particles.php new file mode 100644 index 0000000..9e1d725 --- /dev/null +++ b/src/phuongaz/EasyWing/utils/Particles.php @@ -0,0 +1,38 @@ +name = $particleName; + parent::__construct($pos->getX(), $pos->getY(), $pos->getZ()); + } + + public function encode() { + $pk = new SpawnParticleEffectPacket(); + $pk->position = $this->asVector3(); + $pk->particleName = $this->name; + return $pk; + } +} \ No newline at end of file