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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }