Esempio n. 1
0
 public function name(WorldEditSession $session)
 {
     if (!$this->isValid()) {
         return null;
     }
     return $session->translate(Lang::SPACE_CUBOID_TO_STRING, ["LENGTH_X" => round($this->getLengthX(), 1), "LENGTH_Y" => round($this->getLengthY(), 1), "LENGTH_Z" => round($this->getLengthZ(), 1), "TOTAL_SIZE" => ceil($this->getLengthX() * $this->getLengthY() * $this->getLengthZ()), "X_1" => round($this->x1, 1), "Y_1" => round($this->y1, 1), "Z_1" => round($this->z1, 1), "X_2" => round($this->x2, 1), "Y_2" => round($this->y2, 1), "Z_2" => round($this->z2, 1)]);
 }
 public function loadSession(WorldEditSession $session)
 {
     if (isset($this->userConfigs[$session->getUniqueName()])) {
         $session->init($this->userConfigs[$session->getUniqueName()]);
     }
     $id = $this->main->getObjectPool()->store($session);
     $this->loadSessionImpl($id);
 }
Esempio n. 3
0
 public function tip()
 {
     $tip = $this->owner->translate(Lang::QUEUE_TIP_TITLE) . "\n";
     foreach ($this->rheostats as $rheostat) {
         $tip .= $this->owner->translate(Lang::QUEUE_TIP_ENTRY, ["TASK_NAME" => $rheostat->name(), "PROGRESS_PERC" => round($rheostat->done() / $rheostat->total() * 100, 1)]);
     }
     return trim($tip);
 }
Esempio n. 4
0
 public function run(WorldEditSession $session, array $args)
 {
     $params = new FormattedArguments($args);
     $sel = $session->getSelection($params->opt("n", "default"));
     if ($sel === null) {
         return Lang::ERR_NO_SEL;
     }
     $coll = new BlockCollection();
     while (($string = $params->nextPlain()) !== null) {
         $entry = BlockEntry::fromString($string);
         // TODO handle exception
         $coll->addBlock($entry);
     }
     $bb = $sel->iteratorAllBlocks($coll);
     $rheostat = new Rheostat($session->getQueue(), $bb, $session->translate(Lang::SPACE_SET_BLOCKS, ["SPACE" => $sel->name($session)]));
     $session->getQueue()->addTask($rheostat);
     return Lang::EDIT_SET_IN_PROGRESS;
 }
Esempio n. 5
0
 public function tip()
 {
     $tip = $this->owner->translate(Lang::QUEUE_TIP_TITLE) . "\n";
     if ($this->current->getBlocksOutOfBounds() > 0) {
         $tip .= $this->owner->translate(Lang::QUEUE_TIP_WARNED_ENTRY, ["TASK_NAME" => $this->current->name(), "PROGRESS_PERC" => round($this->current->done() / $this->current->total() * 100, 1), "WARNINGS_CNT" => $this->current->getBlocksOutOfBounds()]);
     } else {
         $tip .= $this->owner->translate(Lang::QUEUE_TIP_ENTRY, ["TASK_NAME" => $this->current->name(), "PROGRESS_PERC" => round($this->current->done() / $this->current->total() * 100, 1)]);
     }
     return trim($tip);
 }
Esempio n. 6
0
 public function run(WorldEditSession $session, array $args)
 {
     $params = new FormattedArguments($args);
     $sel = $session->getSelection($params->opt("n", "default"));
     if ($sel === null) {
         return Lang::ERR_NO_SEL;
     }
     $blocks = $params->nextPlain();
     $sources = [];
     foreach (explode(",", $blocks) as $block) {
         $sources[] = BlockEntry::fromString($block, false);
     }
     $targets = new BlockCollection();
     while (($string = $params->nextPlain()) !== null) {
         $entry = BlockEntry::fromString($string);
         // TODO handle exception
         $targets->addBlock($entry);
     }
     $bb = $sel->iteratorAllBlocks($targets);
     $rheostat = new Rheostat($session->getQueue(), new ArrayBackedBlockFilter($sources), $bb, $session->translate(Lang::SPACE_SET_BLOCKS, ["SPACE" => $sel->name($session)]));
     $session->getQueue()->addTask($rheostat);
     return Lang::EDIT_REPLACE_IN_PROGRESS;
 }
Esempio n. 7
0
 public function run(WorldEditSession $session, array $args)
 {
     $params = new FormattedArguments($args);
     if ($params->enabled("b")) {
         $pos = $session->getBookmark();
         $level = $pos->getLevel($session->getMain()->getServer());
     } elseif (($name = $params->opt("b")) !== null) {
         $pos = $session->getBookmark($name);
         $level = $pos->getLevel($session->getMain()->getServer());
     } elseif (($name = $params->opt("p")) !== null) {
         $pos = $session->getMain()->getServer()->getPlayer($name);
         $level = $pos->getLevel();
         if (!$pos instanceof Player) {
             return Lang::ERR_OFFLINE;
         }
     } else {
         $pos = $session->getLocation();
         $level = $pos->getLevel();
     }
     $name = $params->opt("n", "default");
     $sel = $session->getSelection($name);
     $X = "x";
     $Y = "y";
     $Z = "z";
     if ($this->isTwo) {
         $X .= "2";
         $Y .= "2";
         $Z .= "2";
     } else {
         $X .= "1";
         $Y .= "1";
         $Z .= "1";
     }
     if (!$sel instanceof CuboidSpace) {
         $sel = new CuboidSpace();
         $sel->setLevelName($level->getName());
         $session->setSelection($sel, $name);
     }
     $sel->{$X} = $pos->x;
     $sel->{$Y} = $pos->y;
     $sel->{$Z} = $pos->z;
     $session->sendMessage(Lang::SELECTION_POS_SUCCESS, ["COORD_X" => $pos->x, "COORD_Y" => $pos->y, "COORD_Z" => $pos->z, "POINT_ID" => $this->isTwo ? "2" : "1"]);
     $session->sendMessage(Lang::SELECTION_POS_INFO);
     $session->sendMessageDirect($sel->name($session));
     return null;
 }
Esempio n. 8
0
 public function name(WorldEditSession $session)
 {
     return $session->translate(Lang::SPACE_SPHERE_TO_STRING, ["RADIUS" => round($this->radius, 1), "X" => round($this->center->x, 1), "Y" => round($this->center->y, 1), "Z" => round($this->center->z, 1)]);
 }
Esempio n. 9
0
 public function name(WorldEditSession $session)
 {
     if (!$this->isValid()) {
         return null;
     }
     return $session->translate(Lang::SPACE_CYLINDER_TO_STRING, ["X_BASE" => round($this->baseCenter->x, 1), "Y_BASE" => round($this->baseCenter->y, 1), "Z_BASE" => round($this->baseCenter->z, 1), "X_TOP" => round($this->topCenter->x, 1), "Y_TOP" => round($this->topCenter->y, 1), "Z_TOP" => round($this->topCenter->z, 1), "RADIUS" => round($this->radius, 2)]);
 }
Esempio n. 10
0
 /**
  * {@inheritdoc}
  * This method also checks whether the player is online.
  */
 public function isValid()
 {
     return parent::isValid() and $this->player instanceof Player and $this->player->isOnline();
 }
Esempio n. 11
0
 public function run(WorldEditSession $session, array $args)
 {
     $phrase = $session->getMain()->getTranslationManager()->get(Lang::META_LANGUAGE, $session->getConfig()->lang);
     $session->sendMessage(Lang::VERSION_RESPONSE, ["PLUGIN_VERSION" => $session->getMain()->getDescription()->getVersion(), "PLUGIN_AUTHORS" => implode(", ", $session->getMain()->getDescription()->getAuthors()), "LANG_NAME" => $session->translate(Lang::META_NATIVE), "LANG_VERSION" => $phrase->getUpdated(), "LANG_AUTHORS" => implode(", ", $session->translate(Lang::META_AUTHORS))]);
 }
 public function __construct(WorldEditArt $main, CommandSender $owner)
 {
     $this->main = $main;
     $this->owner = $owner;
     parent::__construct();
 }
Esempio n. 13
0
 public function run(WorldEditSession $session, array $args)
 {
     $params = new FormattedArguments($args);
     if ($params->enabled("b")) {
         $pos = $session->getBookmark();
         $level = $pos->getLevel($session->getMain()->getServer());
     } elseif (($name = $params->opt("b")) !== null) {
         $pos = $session->getBookmark($name);
         $level = $pos->getLevel($session->getMain()->getServer());
     } elseif (($name = $params->opt("p")) !== null) {
         $pos = $session->getMain()->getServer()->getPlayer($name);
         $level = $pos->getLevel();
         if (!$pos instanceof Player) {
             return Lang::ERR_OFFLINE;
         }
     } else {
         $pos = $session->getLocation();
         $level = $pos->getLevel();
     }
     $name = $params->opt("n", "default");
     $sel = $session->getSelection($name);
     if (!$sel instanceof CylinderSpace) {
         $sel = new CylinderSpace();
         $sel->setLevelName($level->getName());
         $session->setSelection($sel, $name);
     }
     if ($this->isTop) {
         $sel->setTopCenter($pos);
     } else {
         $sel->setBaseCenter($pos);
     }
     $session->sendMessage(Lang::SELECTION_POS_SUCCESS, ["COORD_X" => $pos->x, "COORD_Y" => $pos->y, "COORD_Z" => $pos->z, "TOP_OR_BASE" => $session->translate($this->isTop ? Lang::PHRASE_TOP_CENTER : Lang::PHRASE_BASE_CENTER)]);
     $session->sendMessage(Lang::SELECTION_POS_INFO);
     $session->sendMessageDirect($sel->name($session));
     return null;
 }