diff --git a/plugin.yml b/plugin.yml index bff9068..c63641e 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,6 +1,6 @@ name: Festival author: Genboy -version: 2.1.2.1 +version: 2.1.2.3 main: genboy\Festival\Festival load: POSTWORLD api: [3.0.0] diff --git a/src/genboy/Festival/Area.php b/src/genboy/Festival/Area.php index efbffcb..f1175a3 100644 --- a/src/genboy/Festival/Area.php +++ b/src/genboy/Festival/Area.php @@ -22,25 +22,25 @@ class Area{ /** @var int */ public $priority; /** @var Vector3 */ - private $pos1; + public $pos1; /** @var Vector3 */ - private $pos2; + public $pos2; /** @var int */ - private $radius; + public $radius; /** @var int */ public $top; /** @var int */ public $bottom; /** @var string */ - private $levelName; + public $levelName; /** @var string[] */ - private $whitelist; + public $whitelist; /** @var string[] */ public $commands; /** @var string[] */ public $events; - /** @var Main */ - private $plugin; + /** @var Festival */ + public $plugin; public function __construct(string $name, string $desc, int $priority, array $flags, Vector3 $pos1, Vector3 $pos2, int $radius, int $top, int $bottom, string $levelName, array $whitelist, array $commands, array $events, Festival $plugin){ $this->name = $name; @@ -61,22 +61,22 @@ public function __construct(string $name, string $desc, int $priority, array $fl } /** - * @return string + * @return str */ public function getName() : string { return $this->name; } /** - * @param string + * @param str */ - public function setName( $str) : string { + public function setName( $str ) : string { $this->name = $str; return $this->name; } /** - * @return string + * @return str */ public function getDesc() : string { return $this->desc; @@ -104,7 +104,7 @@ public function setPriority( $int ) : int{ public function getPriority() : int{ return $this->priority; } - + /** * @return Vector3 */ @@ -136,9 +136,9 @@ public function getRadius() : int{ /** * @param int */ - public function setTop( $int ) : int{ + public function setTop( int $int ) : int{ $this->top = $int; - return $int; + return $int; } /** * @return int @@ -234,7 +234,7 @@ public function getCommand(string $id) : bool{ */ public function getEvents() : array{ - $arr = []; + $arr = []; if(is_array($this->events)){ foreach($this->events as $nm => $ids){ if( $ids != '' && $ids != ' ' && $ids != 'null' ){ @@ -266,7 +266,6 @@ public function contains(Vector3 $pos, string $levelName) : bool{ // in sphere area $r = $this->radius; - if( $this->getTop() > 0 || $this->getBottom() > 0){ $cy1 = $this->pos1->getY() + $r; @@ -281,32 +280,23 @@ public function contains(Vector3 $pos, string $levelName) : bool{ }else if( $this->getBottom() > 0 ){ $cy2 = $cy2 - $this->getBottom(); } - $distance2d = $this->plugin->get_flat_distance($this->pos1, $pos); if( $distance2d <= $r && $cy1 >= $pos->getY() && $cy2 <= $pos->getY() ){ return true; // point outside radius + y height - }else{ - return false; // point outside radius + -y height } }else{ $distance3d = $this->plugin->get_3d_distance($this->pos1, $pos); - if( $distance3d < $r ){ + if( $distance3d <= $r ){ return true; //point in radius - }else if($distance3d == $r){ - return true; // point is equal to radius - }else{ - return false; // point outside radius } - } + return false; // point outside radius }else if( isset( $this->pos1 ) && isset( $this->pos2 ) ){ // in cube area - // if scale limit $cy1,$cy2 > 0 - $cy1 = max($this->pos1->getY(), $this->pos2->getY()); if( $this->getTop() == 9999 ){ $cy1 = 999999; @@ -320,15 +310,17 @@ public function contains(Vector3 $pos, string $levelName) : bool{ $cy2 = min( $this->pos2->getY(), $this->pos1->getY()) - $this->getBottom(); } - // else - return ((min($this->pos1->getX(), $this->pos2->getX()) <= $pos->getX()) + if((min($this->pos1->getX(), $this->pos2->getX()) <= $pos->getX()) && (max($this->pos1->getX(), $this->pos2->getX()) >= $pos->getX()) && ($cy2 <= $pos->getY()) //&& (min($this->pos1->getY(), $this->pos2->getY()) <= $pos->getY()) && ($cy1 >= $pos->getY())//&& (max($this->pos1->getY(), $this->pos2->getY()) >= $pos->getY()) && (min($this->pos1->getZ(), $this->pos2->getZ()) <= $pos->getZ()) && (max($this->pos1->getZ(), $this->pos2->getZ()) >= $pos->getZ()) - && strtolower( $this->levelName ) === strtolower( $levelName ) ); + && strtolower( $this->levelName ) === strtolower( $levelName ) ){ + return true; + } } + return false; } @@ -362,22 +354,19 @@ public function centerContains(Vector3 $pos, string $levelName) : bool{ $distance2d = $this->plugin->get_flat_distance($this->pos1, $pos); if( $distance2d <= $r && $cy1 >= $pos->getY() && $cy2 <= $pos->getY() ){ return true; // point outside radius + y height - }else{ - return false; // point outside radius + -y height } + return false; }else{ $dis = $this->plugin->get_3d_distance($this->pos1, $pos); - if( $dis < $r ){ - return true; //point in radius - }else if($dis == $r){ - return true; // point is equal to radius - }else{ - return false; // point outside radius + if( $dis <= $r ){ + return true; // point in radius } + return false; } + return false; // point outside radius + -y height }else if( isset( $this->pos1 ) && isset( $this->pos2 ) ){ @@ -402,9 +391,13 @@ public function centerContains(Vector3 $pos, string $levelName) : bool{ $px = $pos->getX(); $py = $pos->getY(); $pz = $pos->getZ(); - return( $px >= ($cx - 1) && $px <= ($cx + 1) && $pz >= ($cz - 1) && $pz <= ($cz + 1) && $py >= $cy2 && $py <= $cy1 - && strtolower( $this->levelName ) === strtolower( $levelName ) ); - } + if( $px >= ($cx - 1) && $px <= ($cx + 1) && $pz >= ($cz - 1) && $pz <= ($cz + 1) && $py >= $cy2 && $py <= $cy1 && strtolower( $this->levelName ) === strtolower( $levelName ) ){ + return true; + } + return false; + + } + return false; } diff --git a/src/genboy/Festival/Festival.php b/src/genboy/Festival/Festival.php index f261f86..064cb9f 100644 --- a/src/genboy/Festival/Festival.php +++ b/src/genboy/Festival/Festival.php @@ -1,25 +1,32 @@ getServer()->getPluginManager()->registerEvents($this, $this); // Load data & configurations @@ -128,11 +121,9 @@ public function onEnable() : void{ $this->getLogger()->info( "Genboy copyright 2019" ); } - /** dataSetup - * @class Helper - * @func Helper getSource + /** dataSetup * @var $plugin->options - */ + */ public function dataSetup(): bool{ // check config file and defaults $o = ""; @@ -782,6 +773,7 @@ public function onCommand(CommandSender $sender, Command $cmd, string $label, ar } break; + /* case "compass": if (!isset($args[1])){ @@ -844,6 +836,7 @@ public function onCommand(CommandSender $sender, Command $cmd, string $label, ar " ". TextFormat::WHITE . Language::translate("cannot-be-found"). " " . TextFormat::GREEN . $list; } break; + */ case "touch": case "pvp": @@ -1290,6 +1283,8 @@ public function onHold(PlayerItemHeldEvent $event): void { //onItemHeld $this->form->openUI($player); } + + /* // check compass and level option to select direction if( $itemheld === ItemIdList::COMPASS && ( isset($this->levels[strtolower($player->getLevel()->getName())]) && $this->levels[strtolower($player->getLevel()->getName())]->getOption("compass") != 'off' ) ){ @@ -1308,6 +1303,7 @@ public function onHold(PlayerItemHeldEvent $event): void { //onItemHeld $this->form->compassAreaForm( $player ); } } + */ } @@ -1326,6 +1322,8 @@ public function levelChange(EntityLevelChangeEvent $event) { // level area titles $this->checkAreaTitles( $entity, $level ); + + /* // reset compass $leaving = $entity->getLevel(); $itemheld = $entity->getInventory()->getItemInHand()->getID(); @@ -1347,6 +1345,8 @@ public function levelChange(EntityLevelChangeEvent $event) { $entity->sendDataPacket($pk); } + */ + } @@ -1801,17 +1801,17 @@ public function onBlockUpdate( BlockUpdateEvent $event ): void{ // BlockUpdateEv * BlockBurnEvent * @param BlockUpdateEvent $event * @return void - // Should check BlockBurnEvent .. - // https://github.com/pmmp/PocketMine-MP/blob/master/src/pocketmine/event/block/BlockBurnEvent.php - - public function onBlockBurn( BlockBurnEvent $event ): void { // BlockBurnEvent - $block = $event->getBlock(); - $position = new Position($block->getFloorX(), $block->getFloorY(), $block->getFloorZ(), $block->getLevel()); - $levelname = $block->getLevel()->getName(); - if( !$this->canBurn( $position ) ){ // is fire not allowed? // Block::FIRE - $event->setCancelled(); - } - } + * Should check BlockBurnEvent .. + * https://github.com/pmmp/PocketMine-MP/blob/master/src/pocketmine/event/block/BlockBurnEvent.php + + * public function onBlockBurn( BlockBurnEvent $event ): void { // BlockBurnEvent + * $block = $event->getBlock(); + * $position = new Position($block->getFloorX(), $block->getFloorY(), $block->getFloorZ(), $block->getLevel()); + * $levelname = $block->getLevel()->getName(); + * if( !$this->canBurn( $position ) ){ // is fire not allowed? // Block::FIRE + * $event->setCancelled(); + * } + * } */ /** onPlayerBucketEvent @@ -1819,14 +1819,14 @@ public function onBlockBurn( BlockBurnEvent $event ): void { // BlockBurnEvent * @param getBlockClicked $event * @return void - public function onPlayerBucketEvent( PlayerBucketEvent $event): void{ - $block = $event->getBlockClicked(); - $position = new Position($block->getFloorX(), $block->getFloorY(), $block->getFloorZ(), $block->getLevel()); - if( ($event->getItem()->getId() == 10 || $event->getItem()->getId() == 11) && !$this->canBurn( $position ) ){ - $event->setCancelled(); - $this->getLogger()->info( 'No lava bucket allowed!' ); - } - } + * public function onPlayerBucketEvent( PlayerBucketEvent $event): void{ + * $block = $event->getBlockClicked(); + * $position = new Position($block->getFloorX(), $block->getFloorY(), $block->getFloorZ(), $block->getLevel()); + * if( ($event->getItem()->getId() == 10 || $event->getItem()->getId() == 11) && !$this->canBurn( $position ) ){ + * $event->setCancelled(); + * $this->getLogger()->info( 'No lava bucket allowed!' ); + * } + *} */ diff --git a/src/genboy/Festival/FormUI.php b/src/genboy/Festival/FormUI.php index a50dbd7..4aad6e1 100644 --- a/src/genboy/Festival/FormUI.php +++ b/src/genboy/Festival/FormUI.php @@ -872,7 +872,7 @@ public function levelForm( Player $sender , $inputs = false, $msg = false) : voi $lvl->setOption( "levelcontrol", $newlevelcontrol ); unset( $data["levelcontrol"] ); - + /* $newcompassoption = "off"; if( $data["compass"] == true){ @@ -889,13 +889,13 @@ public function levelForm( Player $sender , $inputs = false, $msg = false) : voi $pk->y = $target->y; $pk->z = $target->z; $pk->spawnType = SetSpawnPositionPacket::TYPE_WORLD_SPAWN; - $pk->spawnForced = true; + //$pk->spawnForced = true; $sender->sendDataPacket($pk); - } $lvl->setOption( "compass", $newcompassoption ); unset( $data["compass"] ); + */ $flagset = $lvl->getFlags(); $c = 4; @@ -938,12 +938,13 @@ public function levelForm( Player $sender , $inputs = false, $msg = false) : voi } $form->addToggle( Language::translate("ui-toggle-flag-control"), $levelcontrol, "levelcontrol" ); + /* $compass = false; if( isset($optionset["compass"]) && ( $optionset["compass"] === true || $optionset["compass"] == "on" ) ){ $compass = true; } $form->addToggle( Language::translate("ui-compass-use-compass"), $compass, "compass" ); - + */ $form->addLabel( Language::translate("ui-subtitle-level-flags") ); @@ -1022,7 +1023,11 @@ public function areaTPForm( Player $sender ) : void { * @class formUI * @param Player $sender */ + + public function compassAreaForm( Player $sender ) : void { + + /* $form = new CustomForm( function ( Player $sender, ?array $data ) { if( $data === null){ return; @@ -1047,10 +1052,11 @@ public function compassAreaForm( Player $sender ) : void { $pk->y = $target->y; $pk->z = $target->z; $pk->spawnType = SetSpawnPositionPacket::TYPE_WORLD_SPAWN; - $pk->spawnForced = true; + //$pk->spawnForced = true; $sender->sendDataPacket($pk); - }else if( $selectlist[ $data[0] - 1 ] ){ + + }else if( isset( $selectlist[ $data[0] - 1 ] ) ){ $areaname = $selectlist[ $data[0] - 1 ]; if( isset( $this->plugin->areas[ $areaname ] ) ){ @@ -1073,7 +1079,7 @@ public function compassAreaForm( Player $sender ) : void { $pk->x = (int) $cx; $pk->y = (int) $cy; $pk->z = (int) $cz; - $pk->spawnForced = false; + //$pk->spawnForced = false; $sender->dataPacket($pk); }else{ $sender->sendMessage( Language::translate("compass-dir-notset") ); @@ -1099,5 +1105,7 @@ public function compassAreaForm( Player $sender ) : void { } $form->addDropdown( Language::translate("ui-compass-title") , $selectlist ); $form->sendToPlayer( $sender ); + */ + } } diff --git a/src/genboy/Festival/Helper.php b/src/genboy/Festival/Helper.php index 3d13dbc..7b5b693 100644 --- a/src/genboy/Festival/Helper.php +++ b/src/genboy/Festival/Helper.php @@ -23,7 +23,7 @@ public function __construct(Festival $plugin){ if(!is_dir($this->plugin->getDataFolder())){ @mkdir($this->plugin->getDataFolder()); - } + } // add resource folder for backwards compatibility if( !is_dir($this->plugin->getDataFolder().'resources') ){ @mkdir($this->plugin->getDataFolder().'resources'); @@ -197,7 +197,7 @@ public function newConfigPreset() : ARRAY { 'autowhitelist' => 'off', // area creator auto whitelist off,on 'flightcontrol' => 'on', // area fly-flag active off,on 'levelcontrol' => 'off', // area level flags active off,on - 'compass' => 'off', // area level flags active off,on + //'compass' => 'off', // area level flags active off,on ], 'defaults' =>[ 'perms' => false, @@ -266,11 +266,15 @@ public function formatOldConfigs( $c ) : ARRAY { if( isset( $c['Options']['LevelControl'] ) ){ $p['options']['levelcontrol'] = $c['Options']['LevelControl']; } + + /* // compass option $p['options']['compass'] = "off"; if( isset( $c['Options']['Compass'] ) ){ $p['options']['compass'] = $c['Options']['Compass']; } + */ + if( isset( $c['Default'] ) && is_array( $c['Default'] ) ){ @@ -319,10 +323,12 @@ public function loadLevels(): bool{ if( isset($ldata) && is_array($ldata) && !empty($ldata[0])){ foreach($ldata as $level){ + /* // new compass option if( !isset( $level["options"]['compass'] ) ){ $level["options"]['compass'] = "off"; } + */ new FeLevel($level["name"], $level["desc"], $level["options"],$level["flags"], $this->plugin); } $this->plugin->getLogger()->info( "Level data set loaded!" );