Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- declare(strict_types=1);
- namespace AlexBrin\Parachute;
- use pocketmine\entity\Skin;
- use pocketmine\event\Listener;
- use pocketmine\event\player\PlayerJoinEvent;
- use pocketmine\plugin\PluginBase;
- class Parachute extends PluginBase implements Listener {
- /**
- * @type string
- */
- private $skinData;
- /**
- * @type string
- */
- private $geometryData;
- protected function onEnable() {
- $f = $this->getDataFolder();
- if(!is_dir($f))
- @mkdir($f);
- $this->saveResource('model.json');
- $this->saveResource('skydiver.png');
- if(!file_exists($f . 'skin.data'))
- $this->prepareImage();
- $this->skinData = file_get_contents($f . 'skin.data');
- $this->geometryData = file_get_contents($f . 'model.json');
- $this->getServer()->getPluginManager()->registerEvents($this, $this);
- }
- public function onPlayerJoin(PlayerJoinEvent $event) {
- $player = $event->getPlayer();
- $player->changeSkin(
- new Skin(
- 'Standard_Custom',
- $this->skinData,
- '',
- 'geometry.skydiver',
- $this->geometryData
- ), 'geometry.skydiver', $player->getSkin()->getGeometryName()
- );
- }
- /**
- * Переводит изображение в понятный майнкрафту формат
- */
- private function prepareImage() {
- $skin = imagecreatefrompng($this->getDataFolder() . 'skydiver.png');
- $skinData = "";
- for($y = 0, $h = imagesy($skin); $y < $h; $y++)
- for($x = 0, $w = imagesx($skin); $x < $w; $x++) {
- $rgb = imagecolorat($skin, $x, $y);
- $skinData .= chr(($rgb >> 16) & 0xFF)
- . chr(($rgb >> 8) & 0xFF)
- . chr($rgb & 0xFF)
- . chr(255);
- }
- file_put_contents($this->getDataFolder() . 'skin.data', $skinData);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement