Spherable/src/Ad5001/Spherable/Main.php

111 строки
3.6 KiB
PHP

<?php
/***
* ____ _ _ _
* / ___| _ __ | |__ ___ _ __ __ _ | |__ | | ___
* \___ \ | '_ \ | '_ \ / _ \| '__|/ _` || '_ \ | | / _ \
* ___) || |_) || | | || __/| | | (_| || |_) || || __/
* |____/ | .__/ |_| |_| \___||_| \__,_||_.__/ |_| \___|
* |_|
*
* Spheres world generator. A new survival challenge.
* @author Ad5001 <mail@ad5001.eu>
* @copyright (C) 2017 Ad5001
* @license NTOSL (View LICENSE.md)
* @package Spherical
* @version 1.0.0
* @link https://download.ad5001.eu/en/view.php?name=Spherable&src=github
*/
declare(strict_types = 1);
namespace Ad5001\Spherable;
use pocketmine\command\CommandSender;
use pocketmine\command\Command;
use pocketmine\event\Listener;
use pocketmine\plugin\PluginBase;
use pocketmine\level\generator\Generator;
use pocketmine\Server;
use pocketmine\Player;
use pocketmine\level\Position;
use pocketmine\entity\Effect;
use Ad5001\Spherable\generators\spheres\SpheresGenerator;
use Ad5001\Spherable\commands\sphgenCommand;
class Main extends PluginBase implements Listener{
public $playersResist = [];
/**
* When the plugin enables
*
* @return void
*/
public function onEnable(){
Generator::addGenerator(SpheresGenerator::class, "spheres");
$this->getServer()->getCommandMap()->register("sphgen", new sphgenCommand($this));
$this->getServer()->getPluginManager()->registerEvents($this, $this);
}
/**
*/
public function onEntityLevelChange(\pocketmine\event\entity\EntityLevelChangeEvent $event){
if($event->getTarget()->getProvider()->getGenerator() == "spheres" && $event->getEntity() instanceof Player){
$event->getEntity()->setSpawn(new Position(264, 255, 264, $event->getTarget()));
}
}
/**
*/
public function onRespawn(\pocketmine\event\player\PlayerRespawnEvent $event){
if($event->getPlayer()->getLevel()->getProvider()->getGenerator() == "spheres"){
$this->playersResist[$event->getPlayer()->getName()] = time();
$event->getPlayer()->sendMessage("You are resistant for 30 seconds. Profit to go back to your last death point.");
}
}
/**
*/
public function onEntityDamage(\pocketmine\event\entity\EntityDamageEvent $event){
if($event->getEntity()->getLevel()->getProvider()->getGenerator() == "spheres" &&
$event->getEntity() instanceof Player &&
isset($this->playersResist[$event->getEntity()->getName()]) &&
$this->playersResist[$event->getEntity()->getName()] > time() - 30){
$event->setCancelled();
}
}
/**
*/
public function onBlockBreak(\pocketmine\event\block\BlockBreakEvent $event){
if($event->getBlock()->getLevel()->getProvider()->getGenerator() == "spheres"){
if($event->getBlock()->getId() == 56){
$diamonds_count = 1;
foreach($event->getPlayer()->getInventory()->getContents() as $item){
$diamonds_count += $item->getCount();
}
if($diamonds_count % 64 == 0 && $this->getServer()->getPluginManager()->getPlugin("PSMCore") !== null){
\Ad5001\PSMCore\API::displayNotification("Diamonds !", $event->getPlayer()->getName() . " has mined " . ($diamonds_count / 64) . " stacks of diamond!", [], "none");
}
}
}
}
/**
*/
public function onJoin(\pocketmine\event\player\PlayerJoinEvent $event){
if($event->getPlayer()->getLevel()->getProvider()->getGenerator() == "spheres"){
$event->getPlayer()->setSpawn(new Position(264, 255, 264, $event->getPlayer()->getLevel()));
}
}
}