public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     switch (count($args)) {
         case 0:
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             $target = $sender;
             break;
         case 1:
             if (($target = $this->owner->getServer()->getPlayer($args[0])) == null) {
                 $sender->sendMessage(mc::_("%1% not found", $args[0]));
                 return true;
             }
             break;
         default:
             return false;
     }
     $item = clone $target->getInventory()->getItemInHand();
     $sender->sendMesage(TextFormat::BLUE . mc::_("Item: ") . TextFormat::WHITE . ItemName::str($item));
     $sender->sendMesage(TextFormat::BLUE . mc::_("ItemId: ") . TextFormat::WHITE . $item->getId());
     $sender->sendMesage(TextFormat::BLUE . mc::_("Count: ") . TextFormat::WHITE . $item->getCount());
     $sender->sendMesage(TextFormat::BLUE . mc::_("Damage: ") . TextFormat::WHITE . $item->getDamage());
     return true;
 }
Exemplo n.º 2
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if (!isset($args[0])) {
         return false;
     }
     if ($cmd->getName() == "gift") {
         if (($receiver = $this->owner->getServer()->getPlayer($args[0])) == null) {
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             $receiver = $sender;
         } else {
             array_shift($args);
         }
     } else {
         if (!MPMU::inGame($sender)) {
             return true;
         }
         $receiver = $sender;
     }
     if ($receiver->isCreative()) {
         if ($receiver === $sender) {
             $receiver->sendMessage(mc::_("You are in creative mode"));
         } else {
             $sender->sendMessage(mc::_("%1% is in creative mode", $receiver->getDisplayName()));
         }
         return true;
     }
     if (count($args) > 1 && is_numeric($args[count($args) - 1])) {
         $amt = (int) array_pop($args);
     } else {
         $amt = -1;
     }
     $args = strtolower(implode("_", $args));
     if ($args == "more") {
         $item = clone $receiver->getInventory()->getItemInHand();
         if ($item->getId() == 0) {
             $sender->sendMessage(TextFormat::RED . mc::_("Must be holding something"));
             return true;
         }
     } else {
         $item = Item::fromString($args);
         if ($item->getId() == 0) {
             $sender->sendMessage(TextFormat::RED . mc::_("There is no item called %1%", $args));
             return true;
         }
     }
     if ($amt != -1) {
         $item->setCount($amt);
     } else {
         if (isset(self::$stacks[$item->getId()])) {
             $item->setCount(self::$stacks[$item->getId()]);
         } else {
             $item->setCount($item->getMaxStackSize());
         }
     }
     $receiver->getInventory()->addItem(clone $item);
     $this->owner->getServer()->broadcastMessage(mc::_("%1% got %2% of %3% (%4%:%5%)", $receiver->getDisplayName(), $item->getCount(), ItemName::str($item), $item->getId(), $item->getDamage()));
     return true;
 }
Exemplo n.º 3
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if (count($args) !== 0) {
         return false;
     }
     if ($cmd->getName() != "back") {
         return false;
     }
     if (!MPMU::inGame($sender)) {
         return true;
     }
     $pos = $this->getState($sender, null);
     if ($pos == null) {
         $sender->sendMessage(mc::_("No recorded death position to return to"));
         return true;
     }
     list($x, $y, $z, $world) = $pos;
     $level = TPUtils::getLevelByName($this->owner->getServer(), $world);
     if ($level === null) {
         $sender->sendMessage(mc::_("Can not return to your death location"));
         $this->unsetState($sender);
         return true;
     }
     $sender->sendMessage(mc::_("Teleporting to the place of your demise"));
     TPUtils::tpNearBy($sender, new Position($x, $y, $z, $level));
     $this->unsetState($sender);
     return true;
 }
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if ($cmd->getName() != "top") {
         return false;
     }
     switch (count($args)) {
         case 0:
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             $pl = $sender;
             break;
         case 1:
             if (!MPMU::access($sender, "gb.cmd.top.others")) {
                 return true;
             }
             $pl = $this->owner->getServer()->getPlayer($args[0]);
             if (!$pl) {
                 $sender->sendMessage(mc::_("%1% not found", $args[0]));
                 return true;
             }
             break;
         default:
             return false;
     }
     $y = $pl->getLevel()->getHighestBlockAt($pl->getX(), $pl->getZ()) + 1;
     $pl->teleport(new Vector3($pl->getX(), $y, $pl->getZ()));
     return true;
 }
Exemplo n.º 5
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if ($cmd->getName() != "top") {
         return false;
     }
     switch (count($args)) {
         case 0:
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             $pl = $sender;
             break;
         case 1:
             if (!MPMU::access($sender, "gb.cmd.top.others")) {
                 return true;
             }
             if (($pl = MPMU::getPlayer($sender, $args[0])) === null) {
                 return true;
             }
             break;
         default:
             return false;
     }
     $y = $pl->getLevel()->getHighestBlockAt($pl->getX(), $pl->getZ()) + 1;
     $pl->teleport(new Vector3($pl->getX(), $y, $pl->getZ()));
     return true;
 }
Exemplo n.º 6
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if (!MPMU::inGame($sender)) {
         return true;
     }
     switch ($cmd->getName()) {
         case "gmc":
             $mode = 1;
             break;
         case "gms":
             $mode = 0;
             break;
         case "gma":
             $mode = 2;
             break;
         case "gmspc":
             $mode = 3;
             break;
         default:
             return false;
     }
     if ($mode !== $sender->getGamemode()) {
         $sender->setGamemode($mode);
         if ($mode !== $sender->getGamemode()) {
             $sender->sendMessage(TextFormat::RED . mc::_("Unable to change gamemode"));
         } else {
             $this->owner->getServer()->broadcastMessage(mc::_("%1% changed gamemode to %2% mode", $sender->getName(), MPMU::gamemodeStr($mode)));
         }
     } else {
         $sender->sendMessage(mc::_("You are already in %1% mode", MPMU::gamemodeStr($mode)));
     }
     return true;
 }
Exemplo n.º 7
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     switch (count($args)) {
         case 0:
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             $target = $sender;
             $other = false;
             break;
         case 1:
             if (($target = MPMU::getPlayer($sender, $args[0])) === null) {
                 return true;
             }
             $other = true;
             break;
         default:
             return false;
     }
     $item = clone $target->getInventory()->getItemInHand();
     if ($item->getId() == Item::AIR) {
         if ($other) {
             $sender->sendMessage(mc::_("%1% is holding nothing!", $target->getDisplayName()));
         } else {
             $sender->sendMessage(mc::_("You are holding nothing!"));
         }
         return true;
     }
     $sender->sendMessage(TextFormat::BLUE . mc::_("Item: ") . TextFormat::WHITE . ItemName::str($item));
     $sender->sendMessage(TextFormat::BLUE . mc::_("ItemId: ") . TextFormat::WHITE . $item->getId());
     $sender->sendMessage(TextFormat::BLUE . mc::_("Count: ") . TextFormat::WHITE . $item->getCount());
     $sender->sendMessage(TextFormat::BLUE . mc::_("Damage: ") . TextFormat::WHITE . $item->getDamage());
     return true;
 }
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if (!MPMU::inGame($sender)) {
         return true;
     }
     if (count($args) != 1) {
         return false;
     }
     $b = $this->owner->getServer()->getPlayer($args[0]);
     if ($b === null) {
         $sender->sendMessage(mc::_("%1% not found", $args[0]));
         return true;
     }
     switch ($cmd->getName()) {
         case "tpask":
             return $this->cmdTpAsk($sender, $b);
         case "tpahere":
             return $this->cmdTpHere($sender, $b);
         case "tpaccept":
             return $this->cmdAccept($sender, $b);
         case "tpdecline":
             return $this->cmdDecline($sender, $b);
     }
     return false;
 }
Exemplo n.º 9
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     echo __METHOD__ . "," . __LINE__ . "\n";
     //##DEBUG
     if (strtolower($cmd->getName()) != "afk") {
         return false;
     }
     if (!MPMU::inGame($sender)) {
         return true;
     }
     $api = $this->owner->api;
     if ($api->isShielded($sender) && $api->isFrozen($sender) && $api->getMute($sender)) {
         // Current AFK'ed
         $msg = count($args) == 0 ? mc::_("%1% is back at keyboard", $sender->getName()) : implode(" ", $args);
         $api->freeze($sender, false);
         $api->setMute($sender, false);
         $api->setShield($sender, false);
     } else {
         $msg = count($args) == 0 ? mc::_("%1% is away from keyboard", $sender->getName()) : implode(" ", $args);
         $api->freeze($sender, true);
         $api->setMute($sender, true);
         $api->setShield($sender, true);
     }
     $this->owner->getServer()->broadcastMessage($msg);
     return true;
 }
Exemplo n.º 10
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if ($cmd->getName() != "heal") {
         return false;
     }
     if (count($args) == 0) {
         if (!MPMU::inGame($sender)) {
             return true;
         }
         $sender->setHealth($sender->getMaxHealth());
         $sender->sendMessage(mc::_("You have been healed"));
         return true;
     }
     if (($patient = MPMU::getPlayer($sender, $args[0])) === null) {
         return true;
     }
     if (isset($args[1]) && is_numeric($args[1])) {
         $health = $patient->getHealth() + intval($args[1]);
         if ($health > $patient->getMaxHealth()) {
             $health = $patient->getMaxHealth();
         }
     } else {
         $health = $patient->getMaxHealth();
     }
     $patient->setHealth($health);
     $sender->sendMessage(mc::_("%1% was healed.", $args[0]));
     return true;
 }
Exemplo n.º 11
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if ($cmd->getName() != "near") {
         return false;
     }
     if (!MPMU::inGame($sender)) {
         return true;
     }
     switch (count($args)) {
         case 0:
             $radius = 64 * 64;
             break;
         case 1:
             $radius = (int) $args[0] * (int) $args[0];
             break;
         default:
             return false;
     }
     $players = [];
     foreach ($sender->getLevel()->getPlayers() as $pl) {
         $dist = $pl->distanceSquared($players);
         if ($dist < $radius) {
             $players[] = $pl->getDisplayName();
         }
     }
     if (count($players) == 0) {
         $sender->sendMessage(mc::_("No near by players found!"));
     } else {
         $sender->sendMessage(mc::_("Neighbors(%1%): %2%", count($players), implode(", ", $players)));
     }
     return true;
 }
Exemplo n.º 12
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if (strtolower($cmd->getName()) != "xyz") {
         return false;
     }
     if (!MPMU::inGame($sender)) {
         return false;
     }
     $sender->sendMessage(mc::_("You are at %1%,%2%,%3% in world %4%, heading %5%", (int) $sender->getX(), (int) $sender->getY(), (int) $sender->getZ(), $sender->getLevel()->getName(), ExpandVars::bearing($sender->getYaw())));
     return true;
 }
Exemplo n.º 13
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if (count($args) > 1) {
         return false;
     }
     if (count($args) == 0) {
         if (!MPMU::inGame($sender)) {
             return true;
         }
         $target = $sender;
         $other = false;
     } else {
         if (!MPMU::access($sender, "gb.cmd." . $cmd->getName() . ".others")) {
             return true;
         }
         $target = $this->owner->getServer()->getPlayer($args[0]);
         if ($target === null) {
             $sender->sendMessage(mc::_("%1% can not be found.", $args[0]));
             return true;
         }
         $other = true;
     }
     $n = strtolower($target->getName());
     if ($target->isOp()) {
         // Player is dropping from op...
         $this->reops[$n] = true;
         $target->setOp(false);
         if ($other) {
             $sender->sendMessage(mc::_("%1% is no longer Op", $target->getDisplayName()));
         }
         $target->sendMessage(mc::_("You are no longer Op"));
         return true;
     }
     // Player wants to resume op
     if (isset($this->reops[$n])) {
         $target->setOp(true);
         unset($this->reops[$n]);
         if ($other) {
             $sender->sendMessage(mc::_("%1% is now Op", $target->getDisplayName()));
         }
         $target->sendMessage(mc::_("You are now Op"));
         return true;
     }
     // This player can not be re-opped
     if ($other) {
         $sender->sendMessage(mc::_("That is not possible"));
         return true;
     }
     $sender->sendMessage(mc::_("You are not allowed to do this"));
     return true;
 }
Exemplo n.º 14
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if ($cmd->getName() != "spawn") {
         return false;
     }
     if (count($args) != 0) {
         return false;
     }
     if (!MPMU::inGame($sender)) {
         return true;
     }
     $sender->sendMessage(mc::_("Teleporting to spawn..."));
     $this->tpSpawn($sender);
     return true;
 }
Exemplo n.º 15
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if (count($args) == 0) {
         return false;
     }
     $i = array_pop($args);
     if (($type = ArmorItems::str2quality($i)) == ArmorItems::ERROR) {
         $sender->sendMessage(mc::_("Unknown armor quality %1%", $i));
         return false;
     }
     $slots = [0, 1, 2, 3];
     // All slots
     if (count($args)) {
         $i = ArmorItems::str2part($args[count($args) - 1]);
         if ($i != ArmorItems::ERROR) {
             $slots = [$i];
             array_pop($args);
         }
     }
     $pl = $sender;
     if (count($args)) {
         $i = $this->owner->getServer()->getPlayer($args[count($args) - 1]);
         if ($i) {
             $pl = $i;
             if (!MPMU::access($sender, "gb.cmd.setarmor.others")) {
                 return true;
             }
             array_pop($args);
         }
     }
     if (count($args)) {
         return false;
     }
     if (!MPMU::inGame($pl)) {
         return true;
     }
     foreach ($slots as $i) {
         $pl->getInventory()->setArmorItem($i, new Item(ArmorItems::getItemId($type, $i), 0, 1));
     }
     if ($type == ArmorItems::NONE) {
         $sender->sendMessage(mc::_("Amouring down %1%", $pl->getName()));
     } else {
         $sender->sendMessage(mc::_("Amouring up %1%", $pl->getName()));
     }
     // Make sure inventory is updated...
     $pl->getInventory()->sendArmorContents($pl);
     return true;
 }
Exemplo n.º 16
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if (!MPMU::inGame($sender)) {
         return true;
     }
     if (count($args) != 0) {
         return false;
     }
     switch ($cmd->getName()) {
         case "home":
             return $this->cmdHome($sender, $sender->getLevel());
         case "sethome":
             return $this->cmdSet($sender);
         case "delhome":
             return $this->cmdDel($sender);
     }
     return false;
 }
Exemplo n.º 17
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if (count($args) !== 0) {
         return false;
     }
     if ($cmd->getName() != "invis") {
         return false;
     }
     if (!MPMU::inGame($sender)) {
         return true;
     }
     $state = $this->getState($sender, false);
     if ($state) {
         $this->deactivate($sender);
     } else {
         $this->activate($sender);
     }
     return true;
 }
Exemplo n.º 18
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if (count($args) !== 0) {
         return false;
     }
     if ($cmd->getName() != "shield") {
         return false;
     }
     if (!MPMU::inGame($sender)) {
         return true;
     }
     $state = $this->getState($sender, false);
     if ($state) {
         $sender->sendMessage(mc::_("Shields DOWN"));
         $this->unsetState($sender);
     } else {
         $sender->sendMessage(mc::_("Shields UP"));
         $this->setState($sender, true);
     }
     return true;
 }
Exemplo n.º 19
0
 public function cmdDismiss(CommandSender $c, $args)
 {
     if (count($args) == 0) {
         return false;
     }
     if (!MPMU::inGame($c)) {
         return true;
     }
     $state = $this->getState($c, []);
     if (count($state) == 0) {
         $c->sendMessage(mc::_("There is nobody to dismiss"));
         $c->sendMessage(mc::_("You need to summon people first"));
         return true;
     }
     if ($args[0] == "--all") {
         $args = array_keys($state);
     }
     foreach ($args as $i) {
         $pl = $this->owner->getServer()->getPlayer($i);
         if (!$pl) {
             $c->sendMessage(mc::_("%1% can not be found.", $i));
             $i = strtolower($i);
             if (isset($state[$i])) {
                 unset($state[$i]);
             }
             continue;
         }
         $pn = strtolower($pl->getName());
         if (!isset($state[$pn])) {
             $c->sendMessage(mc::_("%1% was never summoned", $i));
             continue;
         }
         $pl->sendMessage(mc::_("You have been dismissed by %1%", $c->getName()));
         $c->sendMessage(mc::_("Dismissing %1%", $i));
         $pl->teleport($state[$pn]);
         unset($state[$pn]);
     }
     $this->setState($c, $state);
     return true;
 }
Exemplo n.º 20
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if ($cmd->getName() != "ftserver") {
         return false;
     }
     if (count($args) != 1) {
         return false;
     }
     $id = $args[0];
     if (($dat = $this->owner->getModule("ServerList")->getServer($id)) === null) {
         $c->sendMessage(TextFormat::RED . mc::_("%1% does not exist", $id));
         return false;
     }
     if (!MPMU::inGame($sender)) {
         return true;
     }
     $host = $this->owner->getModule("ServerList")->getServerAttr($id, "ft-host");
     $port = $this->owner->getModule("ServerList")->getServerAttr($id, "port");
     if (!FastTransfer::transferPlayer($sender, $host, $port)) {
         $this->owner->getLogger()->error(TextFormat::RED . mc::_("FAST TRANSFER ERROR"));
     }
     return true;
 }
Exemplo n.º 21
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if (!MPMU::inGame($sender)) {
         return true;
     }
     if (count($args) != 1) {
         return false;
     }
     if (($b = MPMU::getPlayer($sender, $args[0])) === null) {
         return true;
     }
     switch ($cmd->getName()) {
         case "tpask":
             return $this->cmdTpAsk($sender, $b);
         case "tpahere":
             return $this->cmdTpHere($sender, $b);
         case "tpaccept":
             return $this->cmdAccept($sender, $b);
         case "tpdecline":
             return $this->cmdDecline($sender, $b);
     }
     return false;
 }
Exemplo n.º 22
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if (strtolower($cmd->getName()) != "xyz") {
         return false;
     }
     if (count($args) == 0) {
         if (!MPMU::inGame($sender)) {
             return true;
         }
         $sender->sendMessage(mc::_("You are at %1%,%2%,%3% in world %4%, heading %5%", (int) $sender->getX(), (int) $sender->getY(), (int) $sender->getZ(), $sender->getLevel()->getName(), ExpandVars::bearing($sender->getYaw())));
     } else {
         if (count($args) != 1) {
             return false;
         }
         if (!MPMU::access($sender, "gb.cmd.xyz.others")) {
             return true;
         }
         if (($player = MPMU::getPlayer($sender, $args[0])) === null) {
             return true;
         }
         $sender->sendMessage(mc::_("%6% is at %1%,%2%,%3% in world %4%, heading %5%", (int) $player->getX(), (int) $player->getY(), (int) $player->getZ(), $player->getLevel()->getName(), ExpandVars::bearing($player->getYaw()), $player->getDisplayName()));
     }
     return true;
 }
Exemplo n.º 23
0
 private function rmInvItem(CommandSender $sender, array $args)
 {
     if (count($args) == 0) {
         return false;
     }
     if (($target = $this->owner->getServer()->getPlayer($args[0])) === null) {
         if (!MPMU::inGame($sender)) {
             return true;
         }
         $target = $sender;
         $other = false;
     } else {
         if (!MPMU::access($sender, "gb.cmd.rminv.others")) {
             return true;
         }
         array_shift($args);
         $other = true;
     }
     if (count($args) == 0) {
         return false;
     }
     if ($target->isCreative() || $target->isSpectator()) {
         $sender->sendMessage(mc::_("%1% is in %2% mode", $target->getDisplayName(), MPMU::gamemodeStr($target->getGamemode())));
         return true;
     }
     $count = null;
     if (count($args) > 1 && is_numeric($args[count($args) - 1])) {
         $count = array_pop($args);
     }
     $args = strtolower(implode("_", $args));
     if ($args == "hand") {
         $item = clone $target->getInventory()->getItemInHand();
         if ($item->getId() == 0) {
             $sender->sendMessage(mc::_("Must be holding something"));
             return true;
         }
     } else {
         $item = Item::fromString($args);
         if ($item->getId() == 0) {
             $sender->sendMessage(mc::_("There is no item called %1%", $args));
             return true;
         }
     }
     $k = InvUtils::rmInvItem($target, $item, $count);
     if ($k) {
         $sender->sendMessage(mc::n(mc::_("one item of %1% removed", ItemName::str($item)), mc::_("%2% items of %1% removed", ItemName::str($item), $k), $k));
         if ($other) {
             $target->sendMessage(mc::n(mc::_("%2% took one item of %1% from you", ItemName::str($item), $sender->getName()), mc::_("%3% took %2% items of %1% from you", ItemName::str($item), $k, $sender->getName()), $k));
         }
     } else {
         $sender->sendMessage(mc::_("No items were removed!"));
     }
     return true;
 }
Exemplo n.º 24
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     $s = MPMU::iName($sender);
     switch ($cmd->getName()) {
         case "followers":
             $pageNumber = $this->getPageNumber($args);
             $txt = [mc::_("Leads: %1%", count($this->leaders))];
             foreach ($this->leaders as $lead => $followers) {
                 $txt[] = $lead . "(" . count($followers) . "):" . implode(", ", $followers);
             }
             return $this->paginateText($sender, $pageNumber, $txt);
         case "follow":
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             if (count($args) != 1) {
                 return false;
             }
             $n = array_shift($args);
             if (($player = MPMU::getPlayer($sender, $n)) === null) {
                 return true;
             }
             if (isset($this->followers[$s])) {
                 $sender->sendMessage(mc::_("You are no longer following %1%", $this->followers[$s]));
                 $this->stopFollowing($s);
             }
             $sender->sendMessage(mc::_("You are now following %1%", $n));
             $this->follow($s, $player);
             return true;
         case "follow-off":
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             if (count($args) != 0) {
                 return false;
             }
             if (isset($this->followers[$s])) {
                 $sender->sendMessage(mc::_("You are no longer following %1%", $this->followers[$s]));
                 $this->stopFollowing($s);
             } else {
                 $sender->sendMessage(mc::_("You are not following anybody"));
             }
             return true;
         case "followme":
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             if (count($args) == 0) {
                 return false;
             }
             foreach ($args as $n) {
                 if (($player = MPMU::getPlayer($sender, $n)) === null) {
                     return true;
                 }
                 $this->stopFollowing($player);
                 $this->follow($player, $s);
                 $sender->sendMessage(mc::_("%1% is now following you", $n));
                 $player->sendMessage(mc::_("You are now following %1%", $s));
             }
             return true;
         case "followme-off":
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             if (count($args) != 0) {
                 return false;
             }
             $this->stopLeading($s);
             $sender->sendMessage(mc::_("Nobody is following you"));
             return true;
     }
     return false;
 }
Exemplo n.º 25
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if ($cmd->getName() != "skin") {
         return false;
     }
     $pageNumber = $this->getPageNumber($args);
     if (isset($args[0])) {
         $human = $this->owner->getServer()->getPlayer($args[0]);
         if ($human !== null) {
             array_shift($args);
         } else {
             $human = $sender;
         }
     }
     if (count($args) == 0) {
         $args = ["ls"];
     }
     switch (strtolower(array_shift($args))) {
         case "ls":
             $skins = [];
             foreach (glob($this->owner->getDataFolder() . "*.*") as $f) {
                 if (SkinUtils::isSkinFile($f)) {
                     $skins[] = $f;
                 }
             }
             if (count($skins) == 0) {
                 $sender->sendMessage(mc::_("No skins found"));
                 return true;
             }
             $txt = [mc::n(mc::_("Found one skin"), mc::_("Found %1% skins", count($skins)), count($skins))];
             $cols = 8;
             $i = 0;
             foreach ($skins as $n) {
                 $n = basename($n, ".skin");
                 if ($i++ % $cols == 0) {
                     $txt[] = $n;
                 } else {
                     $txt[count($txt) - 1] .= ", " . $n;
                 }
             }
             return $this->paginateText($sender, $pageNumber, $txt);
         case "formats":
         case "fmt":
             if (count($args) != 0) {
                 return false;
             }
             $sender->sendMessage(mc::_("Supported formats: %1%", implode(", ", SkinUtils::formats())));
             return true;
         case "save":
             if (count($args) != 1) {
                 return false;
             }
             if (!MPMU::inGame($human)) {
                 return true;
             }
             if ($human !== $sender && !MPMU::access($sender, "gb.cmd.skin.other")) {
                 return true;
             }
             if (SkinUtils::isPngExt($args[0])) {
                 $fmts = SkinUtils::formats();
                 if (!isset($fmts[SkinUtils::PNG_FMT])) {
                     $sender->sendMessage(mc::_("PNG format is not supported"));
                     return true;
                 }
                 $fn = $this->owner->getDataFolder() . preg_replace('/\\.[pP][nN][gG]$/', '', basename($args[0])) . ".png";
             } else {
                 $fn = $this->owner->getDataFolder() . preg_replace('/\\.skin$/', '', basename($args[0])) . ".skin";
             }
             $cnt = SkinUtils::saveSkin($human, $fn);
             $sender->sendMessage(mc::_("Wrote %1% bytes to %2%", $cnt, $fn));
             return true;
         case "load":
             $slim = false;
             if (isset($args[0]) && $args[0] == "--slim") {
                 $slim = true;
                 array_shift($args);
             }
             if ($human !== $sender && !MPMU::access($sender, "gb.cmd.skin.other")) {
                 return true;
             }
             if (count($args) != 1) {
                 return false;
             }
             if (!MPMU::inGame($human)) {
                 return true;
             }
             if (SkinUtils::isPngExt($args[0])) {
                 $fmts = SkinUtils::formats();
                 if (!isset($fmts[SkinUtils::PNG_FMT])) {
                     $sender->sendMessage(mc::_("PNG format is not supported"));
                     return true;
                 }
                 $fn = $this->owner->getDataFolder() . preg_replace('/\\.[pP][nN][gG]$/', '', basename($args[0])) . ".png";
             } else {
                 $fn = $this->owner->getDataFolder() . preg_replace('/\\.skin$/', '', basename($args[0])) . ".skin";
             }
             if (SkinUtils::loadSkin($human, $slim, $fn)) {
                 $sender->sendMessage(mc::_("Updated skin for %1%", $human->getName()));
             } else {
                 $sender->sendMessage(mc::_("Unable to read %1%", $fn));
             }
             return true;
         case "slim":
             if ($human !== $sender && !MPMU::access($sender, "gb.cmd.skin.other")) {
                 return true;
             }
             if (count($args) != 0) {
                 return false;
             }
             if (!MPMU::inGame($human)) {
                 return true;
             }
             SkinUtils::setSlim($human, true);
             $sender->sendMessage(mc::_("%1% is now slim", $human->getName()));
             return true;
         case "thick":
             if ($human !== $sender && !MPMU::access($sender, "gb.cmd.skin.other")) {
                 return true;
             }
             if (count($args) != 0) {
                 return false;
             }
             if (!MPMU::inGame($human)) {
                 return true;
             }
             SkinUtils::setSlim($human, false);
             $sender->sendMessage(mc::_("%1% is now thick", $human->getName()));
             return true;
     }
     return false;
 }
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     switch ($cmd->getName()) {
         case "nick":
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             if (count($args) == 0) {
                 $sender->sendMessage(mc::_("Current nick is: %1%", $sender->getDisplayName()));
                 return true;
             }
             if (count($args) !== 1) {
                 return false;
             }
             $this->owner->getServer(mc::_("%1% is now known as %2%", $sender->getDisplayName(), $args[0]));
             $sender->setDisplayName($args[0]);
             return true;
         case "clearchat":
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             if (count($args) != 0) {
                 return false;
             }
             for ($i = 0; $i < 32; ++$i) {
                 $sender->sendMessage(" ");
             }
             return true;
         case "chat-on":
         case "chat-off":
             if (count($args) > 0) {
                 switch ($n = strtolower(array_shift($args))) {
                     case "--list":
                     case "--ls":
                     case "-l":
                         if (!MPMU::access($sender, "gb.cmd.togglechat.others")) {
                             return true;
                         }
                         $pageNumber = $this->getPageNumber($args);
                         $txt = [""];
                         $cols = 8;
                         $i = 0;
                         foreach ($this->owner->getServer()->getOnlinePlayers() as $p) {
                             if (!$this->getState($p, false)) {
                                 continue;
                             }
                             $n = $p->getDisplayName();
                             if ($i++ % $cols == 0) {
                                 $txt[] = $n;
                             } else {
                                 $txt[count($txt) - 1] .= ", " . $n;
                             }
                         }
                         if ($i == 0) {
                             $sender->sendMessage(mc::_("No players with chat off"));
                             if (!$this->chat) {
                                 $sender->sendMessage(mc::_("Chat is GLOBALLY off"));
                             }
                             return true;
                         }
                         if ($this->chat) {
                             $txt[0] = mc::n(mc::_("One player with chat off"), mc::_("%1% players with chat off", $i), $i);
                         } else {
                             $txt[0] = mc::_("Chat is GLOBALLY off");
                         }
                         return $this->paginateText($sender, $pageNumber, $txt);
                     case "--server":
                     case "--global":
                     case "-g":
                         if (count($args)) {
                             return false;
                         }
                         if (!MPMU::access($sender, "gb.cmd.togglechat.global")) {
                             return true;
                         }
                         if ($cmd->getName() == "chat-off") {
                             $this->setGlobalChat(false);
                             $this->owner->getServer()->broadcastMessage(mc::_("Chat disabled globally from %1%", $sender->getName()));
                         } else {
                             $this->setGlobalChat(true);
                             $this->owner->getServer()->broadcastMessage(mc::_("Chat enabled globally from %1%", $sender->getName()));
                         }
                         return true;
                     default:
                         if (count($args)) {
                             return false;
                         }
                         if (!MPMU::access($sender, "gb.cmd.togglechat.others")) {
                             return true;
                         }
                         $player = $this->owner->getServer()->getPlayer($n);
                         if ($player === null) {
                             $sender->sendMessage(mc::_("Unable to find %1%", $n));
                             return true;
                         }
                         if ($cmd->getName() == "chat-off") {
                             $this->setState($player, true);
                             $player->sendMessage(mc::_("Chat disabled from %1%", $sender->getName()));
                             $sender->sendMessage(mc::_("Chat disabled for %1%", $player->getDisplayName()));
                         } else {
                             $this->unsetState($player);
                             $player->sendMessage(mc::_("Chat enabled from %1%", $sender->getName()));
                             $sender->sendMessage(mc::_("Chat enabled for %1%", $player->getDisplayName()));
                         }
                         return true;
                 }
                 return false;
             }
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             if ($cmd->getName() == "chat-off") {
                 $this->setState($sender, true);
                 $sender->sendMessage(mc::_("Chat disabled"));
             } else {
                 $this->unsetState($sender);
                 $sender->sendMessage(mc::_("Chat enabled"));
             }
             return true;
     }
     return false;
 }
Exemplo n.º 27
0
 private function cmdSet($sender, $args)
 {
     switch (count($args)) {
         case 0:
             return false;
         case 1:
             $n = strtolower($args[0]);
             $pos = $sender;
             break;
         default:
             $n = strtolower(array_shift($args));
             $pos = explode(":", implode(" ", $args), 2);
             if (count($pos) == 2) {
                 $world = $pos[1];
                 $level = TPUtils::getLevelByName($this->owner->getServer(), $world);
                 if ($level === null) {
                     $sender->sendMessage(mc::_("World %1% does not exist", $world));
                     return true;
                 }
             } else {
                 if (MPMU::inGame($sender, false)) {
                     $level = $sender->getLevel();
                 } else {
                     $level = $this->owner->getServer()->getDefaultLevel();
                 }
             }
             $pos = explode(",", $pos[0]);
             if (count($pos) != 3) {
                 $sender->sendMessage(mc::_("Invalid position"));
                 return true;
             }
             $pos = new Position(intval($pos[0]), intval($pos[1]), intval($pos[2]), $level);
     }
     $warp = $this->getWarp($n);
     if ($warp == null) {
         if (!MPMU::access($sender, "gb.cmd.setwarp.new")) {
             return true;
         }
         PermUtils::add($this->owner, "gb.warp." . $n, "warp to " . $n, self::defaultWarpPerm);
     } else {
         if (!MPMU::access($sender, "gb.cmd.setwarp.move")) {
             return true;
         }
     }
     if ($this->setWarp($n, $pos)) {
         $sender->sendMessage(mc::_("Warp %1% created", $n));
     } else {
         $sender->sendMessage(mc::_("Unable to create Warp %1%", $n));
     }
     return true;
 }
Exemplo n.º 28
0
 private function spyCmd(CommandSender $sender, $args)
 {
     if (count($args) == 0) {
         return false;
     }
     switch (strtolower($args[0])) {
         case "status":
             if (count($args) > 2) {
                 return false;
             }
             if (count($args) == 1) {
                 if (!MPMU::inGame($sender)) {
                     return true;
                 }
                 $pl = $sender;
             } else {
                 if (($pl = MPMU::getPlayer($sender, $args[0])) == null) {
                     return true;
                 }
             }
             if (!$this->spy->isTapping($pl)) {
                 $sender->sendMessage(mc::_("%1% is not spying", $pl->getName()));
                 return true;
             }
             $taps = $this->spy->getTaps($pl);
             if ($taps == null) {
                 $sender->sendMessage(mc::_("%1% has a global tap", $pl->getName()));
                 return true;
             }
             $sender->sendMessage(mc::_("%1% spying on: %2%", $pl->getName(), implode(", ", $taps)));
             return true;
         case "start":
         case "stop":
             if (count($args) != 2) {
                 return false;
             }
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             $ena = strtolower($args[0]) == "start";
             if ($ena) {
                 if (!$this->spy->isTapping($sender)) {
                     $this->spy->configTap($sender, [$this, "spyCb"]);
                 }
             }
             switch (strtolower($args[1])) {
                 case "--all":
                     $this->spy->setTap($sender, null, $ena);
                     if ($ena) {
                         $this->owner->getServer()->broadcastMessage(mc::_("%1% activated a global tap", $sender->getName()));
                     } else {
                         $this->spy->configTap($sender, null);
                         $this->owner->getServer()->broadcastMessage(mc::_("%1% stopped tapping", $sender->getName()));
                     }
                     return true;
                 case "--console":
                     $this->spy->setTap($sender, SpySession::CONSOLE, $ena);
                     $this->spy->setTap($sender, SpySession::RCON, $ena);
                     $this->owner->getServer()->broadcastMessage($ena ? mc::_("%1% activated a console tap", $sender->getName()) : mc::_("%1% stopped a console tap"));
                     break;
                 default:
                     if (($pl = MPMU::getPlayer($sender, $args[1])) == null) {
                         return true;
                     }
                     $this->spy->setTap($sender, $pl, $ena);
                     $this->owner->getServer()->broadcastMessage($ena ? mc::_("%1% is spying on %2%", $sender->getName(), $pl->getName()) : mc::_("%1% stopped spying on %2%", $sender->getName(), $pl->getName()));
                     break;
             }
             if (!$ena) {
                 if (count($this->spy->getTaps($sender)) == 0) {
                     $this->spy->configTap($sender, null);
                 }
             }
             return true;
     }
     return false;
 }
Exemplo n.º 29
0
 public function cmdPopTp(CommandSender $c, $args)
 {
     if (!MPMU::inGame($c)) {
         return true;
     }
     if (count($args)) {
         return false;
     }
     $stack = $this->getState($c, []);
     if (count($stack) == 0) {
         $c->sendMessage(mc::_("TpStack is empty"));
         return true;
     }
     $pos = array_pop($stack);
     $c->sendMessage(mc::_("Teleporting..."));
     $c->teleport($pos);
     $this->setState($c, $stack);
     return true;
 }
Exemplo n.º 30
0
 private function cmdTileList(CommandSender $c, $args)
 {
     $pageNumber = $this->getPageNumber($args);
     if (count($args) > 1) {
         $c->sendMessage(mc::_("Usage: /et tiles [world]"));
         return false;
     }
     if (count($args)) {
         $level = $this->owner->getServer()->getLevelByName($args[0]);
         if (!$level) {
             $c->sendMessage(mc::_("%1%: World not found", $args[0]));
             return true;
         }
     } else {
         if (MPMU::inGame($c, false)) {
             $level = $c->getLevel();
         } else {
             $level = $this->owner->getServer()->getDefaultLevel();
         }
     }
     $cnt = 0;
     $tab = [];
     $tab[] = ["-", mc::_("Name"), mc::_("Position")];
     foreach ($level->getTiles() as $t) {
         $id = $t->getId();
         $pos = implode(",", [floor($t->getX()), floor($t->getY()), floor($t->getZ())]);
         $name = basename(strtr(get_class($t), "\\", "/"));
         $tab[] = [$id, $name, $pos];
         ++$cnt;
     }
     $tab[0][0] = "#:{$cnt}";
     if ($cnt) {
         return $this->paginateTable($c, $pageNumber, $tab);
     }
     $c->sendMessage(mc::_("No tiles found"));
     return true;
 }