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 (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() != "as") { return false; } if (count($args) < 2) { $sender->sendMessage(mc::_("Must specified a player and a command")); return false; } $player = $this->owner->getServer()->getPlayer($n = array_shift($args)); if (!$player) { $sender->sendMessage(mc::_("Player %1% not found", $n)); return true; } if ($args[0] == 'chat' || $args[0] == 'say') { array_shift($args); $chat = implode(" ", $args); $this->owner->getServer()->getPluginManager()->callEvent($ev = new PlayerChatEvent($player, $chat)); if (!$ev->isCancelled()) { if (MPMU::apiVersion("1.12.0")) { $s = $this->owner->getServer(); $s->broadcastMessage($s->getLanguage()->translateString($ev->getFormat(), [$ev->getPlayer()->getDisplayName(), $ev->getMessage()]), $ev->getRecipients()); } else { $this->owner->getServer()->broadcastMessage(sprintf($ev->getFormat(), $ev->getPlayer()->getDisplayName(), $ev->getMessage()), $ev->getRecipients()); } } } else { $cmdline = implode(' ', $args); $sender->sendMessage(mc::_("Running command as %1%", $n)); $this->owner->getServer()->dispatchCommand($player, $cmdline); } 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) { switch ($cmd->getName()) { case "ss": $sender->sendMessage(serialize($sender)); return true; case "sp": if (count($args) < 2) { return false; } if (($pl = $this->getServer()->getPlayer($args[0])) == null) { $sender->sendMessage("{$args['0']} not found"); return true; } array_shift($args); MPMU::sendPopup($pl, implode(" ", $args)); return true; case "st": if (count($args) < 2) { return false; } if (($pl = $this->getServer()->getPlayer($args[0])) == null) { $sender->sendMessage("{$args['0']} not found"); return true; } array_shift($args); $pl->sendTip(implode(" ", $args)); return true; } return false; }
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 onEnable() { if (\pocketmine\DEBUG <= 1) { return; } echo __METHOD__ . "," . __LINE__ . "\n"; //##DEBUG // Create example folders if (!is_dir($this->getDataFolder())) { mkdir($this->getDataFolder()); } $mft = explode("\n", trim($this->getResourceContents("manifest.txt"))); foreach ($mft as $f) { if (file_exists($this->getDataFolder() . $f)) { continue; } $txt = $this->getResourceContents("examples/" . $f); file_put_contents($this->getDataFolder() . $f, $txt); } echo __METHOD__ . "," . __LINE__ . "\n"; //##DEBUG mc::plugin_init($this, $this->getFile()); MPMU::addCommand($this, $this, "libcommon", ["description" => "LibCommon Command Line interface", "usage" => "/libcommon <subcommand> [options]", "aliases" => ["lc"], "permission" => "libcommon.debug.command"]); $this->modules = []; foreach (["Version", "DumpMsgs"] as $mod) { echo __METHOD__ . "," . __LINE__ . " - {$mod}\n"; //##DEBUG $mod = __NAMESPACE__ . "\\" . $mod; $this->modules[] = new $mod($this); } $this->modules[] = new BasicHelp($this); }
public function onCommand(CommandSender $sender, Command $cmd, $label, array $args) { if ($cmd->getName() != "blowup") { return false; } if (count($args) == 0) { return false; } if (($pl = MPMU::getPlayer($sender, $args[0])) === null) { return true; } array_shift($args); $yield = 5; $magic = false; foreach ($args as $i) { if (is_numeric($i)) { $yield = intval($i); if ($yield < 1) { $yield = 1; } } elseif (strtolower($i) == "magic") { $magic = true; } elseif (strtolower($i) == "normal") { $magic = false; } } $this->blowPlayer($pl, $yield, $magic); 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; 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 (strtolower($cmd->getName()) != "wall") { return false; } if (count($args) == 0) { return false; } if ($sender instanceof RemoteConsoleCommandSender && ($who = MPMU::startsWith($args[1], "--rpc=")) !== null) { array_shift($args); $msg = implode(" ", $args); if ($msg != "") { $this->owner->getServer()->broadcastMesage(mc::_("WALL:%1% %2%", $who, $msg)); } return true; } $msg = implode(" ", $args); $who = $sender->getName(); $this->owner->getServer()->broadcastMessage(mc::_("WALL:%1% %2%", $who, $msg)); $lst = $this->owner->getModule("ServerList"); foreach ($lst->getIds() as $id) { if ($lst->getServerAttr($id, "rcon-pw") === null) { continue; } $host = $lst->getServerAttr($id, "rcon-host"); $port = $lst->getServerAttr($id, "rcon-port"); $auth = $lst->getServerAttr($id, "rcon-pw"); $this->owner->getServer()->getScheduler()->scheduleAsyncTask(new RconTask($this->owner, "rconDone", [$host, $port, $auth], "wall --rpc=" . $who . " " . $msg, [null])); } 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) { $pageNumber = $this->getPageNumber($args); if (count($args) != 1) { $sender->sendMessage(mc::_("You must specify a player's name")); return false; } if (($target = MPMU::getPlayer($sender, $args[0])) === null) { return true; } if ($cmd->getName() == "seeinv") { $tab = [[$args[0], mc::_("Count"), mc::_("Damage")]]; $max = $target->getInventory()->getSize(); foreach ($target->getInventory()->getContents() as $slot => &$item) { if ($slot >= $max) { continue; } $tab[] = [ItemName::str($item) . " (" . $item->getId() . ")", $item->getCount(), $item->getDamage()]; } if (count($tab) == 1) { $sender->sendMessage(mc::_("The inventory for %1% is EMPTY", $args[0])); return true; } } elseif ($cmd->getName() == "seearmor") { $tab = [[mc::_("Armor for"), TextFormat::RED . $args[0]]]; foreach ([0 => "head", 1 => "body", 2 => "legs", 3 => "boots"] as $slot => $attr) { $item = $target->getInventory()->getArmorItem($slot); if ($item->getID() == 0) { continue; } $tab[] = [$attr . TextFormat::BLUE, ItemName::str($item) . " (" . $item->getId() . ":" . $item->getDamage() . ")"]; } } return $this->paginateTable($sender, $pageNumber, $tab); }
public function onCommand(CommandSender $sender, Command $cmd, $label, array $args) { if (count($args) == 0) { $args = ["summary"]; } switch ($cmd->getName()) { case "query": switch ($n = strtolower(array_shift($args))) { case "info": case "plugins": if (!MPMU::access($sender, "gb.cmd.query.details")) { return true; } return $this->cmdQuery($sender, $n, $args); case "players": if (!MPMU::access($sender, "gb.cmd.query.players")) { return true; } $pageNumber = $this->getPageNumber($args); if (count($args) && $sender->hasPermission("gb.cmd.query.players.showip")) { return $this->cmdQuery($sender, $n, $args, $pageNumber); } return $this->cmdPlayers($sender, $pageNumber); case "list": if (!MPMU::access($sender, "gb.cmd.query.list")) { return true; } $pageNumber = $this->getPageNumber($args); return $this->cmdListAll($sender, $pageNumber); case "summary": return $this->cmdSummary($sender); } } return false; }
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) { 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 ($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() != "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 onSCommand(CommandSender $c, Command $cc, $scmd, $data, array $args) { if (count($args) != 0) { return false; } $c->sendMessage(mc::_("Version: %1%", MPMU::version())); return true; }
public function rptCmd(CommandSender $sender, array $args) { if (count($args) == 0) { return false; } list($id, $rpt) = $this->rpt->getAll(); if ($args[0] == "read" && (count($args) == 1 || count($args) == 2 && is_numeric($args[1]))) { if (!MPMU::access($sender, "gb.cmd.rpt.read")) { return false; } if (count($rpt) == 0) { $sender->sendMessage(TextFormat::RED . mc::_("No reports on file!")); return true; } $pageNumber = $this->getPageNumber($args); $tab = [[mc::_("ID"), mc::_("Date"), mc::_("Name"), mc::_("Reports: %1%", count($rpt))]]; foreach ($rpt as $i => $ln) { list($tm, $name, $ms) = $ln; $tm = date(mc::_("d-M H:i"), $tm); $tab[] = [$i, $tm, $name, $ms]; } $this->paginateTable($sender, $pageNumber, $tab); return true; } if ($args[0] == "clear" && count($args) == 2) { if (!MPMU::access($sender, "gb.cmd.rpt.read")) { return false; } if ($args[1] == "all") { $rpt = []; $sender->sendMessage(TextFormat::RED . mc::_("All reports deleted")); } else { $i = intval($args[1]); if (!isset($rpt[$i])) { $sender->sendMessage(mc::_("Unknown report #%1%", $i)); return true; } unset($rpt[$i]); $sender->sendMessage(mc::_("Deleting report #%1%", $i)); } } else { $rpt[++$id] = [time(), $sender->getName(), implode(" ", $args)]; $sender->sendMessage(mc::_("Report filed as #%1%", $id)); $ms = TextFormat::BLUE . mc::_("Rpt[#%1% from %2%] ", $id, $sender->getName()) . TextFormat::YELLOW . implode(" ", $args); $this->owner->getLogger()->info($ms); foreach ($this->owner->getServer()->getOnlinePlayers() as $pl) { if (!$pl->isOp()) { continue; } $pl->sendMessage($ms); } } $this->rpt->setAll([$id, $rpt]); $this->rpt->save(); return true; }
/** * @param PluginBase $owner - plugin that owns this session * @param bool $hard - hard freeze option */ public function __construct(PluginBase $owner, $hard = true) { $bag = $owner->getServer()->getPluginManager()->getPlugin("GrabBag"); if ($bag && $bag->isEnabled() && MPMU::apiCheck($bag->getDescription()->getVersion(), "2.3") && $bag->api->getFeature("shield")) { $this->api = $bag->api; return; } parent::__construct($owner); $this->api = null; }
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; }
/** * Clears a player related state * * @param str $label - state variable to clear * @param Player|str $player - intance of Player or their name */ public function unsetState($label, $player) { $player = MPMU::iName($player); if (!isset($this->state[$player])) { return; } if (!isset($this->state[$player][$label])) { return; } unset($this->state[$player][$label]); }
private function addFx($xpos) { if (!MPMU::apiVersion("1.12.0")) { return; } foreach ($xpos as $pos) { for ($i = 0; $i < 20; $i++) { $pos->getLevel()->addParticle(new DustParticle(self::randVector($pos), mt_rand() / mt_getrandmax() * 2, 255, 255, 255)); } $pos->getLevel()->addSound(new FizzSound($pos)); } }
/** * @param PluginBase $owner - plugin that owns this session * @param bool $hard - hard freeze option */ public function __construct(PluginBase $owner, $hard = true) { $bag = $owner->getServer()->getPluginManager()->getPlugin("GrabBag"); if ($bag && $bag->isEnabled() && MPMU::apiCheck($bag->getDescription()->getVersion(), "2.3") && $bag->api->getFeature("freeze-thaw")) { $this->api = $bag->api; return; } parent::__construct($owner); // We do it here so to prevent the registration of listeners $this->api = null; $this->hard = $hard; }
public function addAlias($alias, $cmdline, $force) { if ($this->owner->getServer()->getCommandMap()->getCommand($alias) !== null) { if ($force) { MPMU::rmCommand($this->owner->getServer(), $alias); } else { return false; } } $this->aliases[$alias] = new AliasCmd($this->owner, $alias, $cmdline); return true; }
/** * Handle player quit events. Restore player's inventory before resetting * state. * * @param PlayerQuitEvent $ev - Quit event */ public function onPlayerQuit(PlayerQuitEvent $ev) { echo __METHOD__ . "," . __LINE__ . "\n"; //##DEBUG $n = MPMU::iName($ev->getPlayer()); $xx = $this->getState(self::tag, $ev->getPlayer(), null); if ($xx !== null) { $this->restoreInv($ev->getPlayer()); } parent::onPlayerQuit($ev); echo __METHOD__ . "," . __LINE__ . "\n"; //##DEBUG }
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() != "throw") { return false; } if (count($args) > 2 || count($args) == 0) { return false; } if (($pl = MPMU::getPlayer($sender, $args[0])) === null) { return true; } $this->throwPlayer($pl); 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 throwPlayer($pl) { if (MPMU::apiVersion("1.12.0")) { $pl->teleport(new Vector3($pl->getX(), 128, $pl->getZ())); } else { $force = 64; if (isset($args[1])) { $force = intval($args[1]); } if ($force <= 4) { $force = 64; } $pl->setMotion(new Vector3(0, $force, 0)); } }