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;
     }
     $pl = $this->owner->getServer()->getPlayer($args[0]);
     if (!$pl) {
         $sender->sendMessage(mc::_("%1% not found", $args[0]));
         return true;
     }
     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));
     }
     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 onEnable()
 {
     if (!is_dir($this->getDataFolder())) {
         mkdir($this->getDataFolder());
     }
     mc::plugin_init($this, $this->getFile());
     $features = ["players" => ["CmdPlayers", true], "ops" => ["CmdOps", true], "gm?" => ["CmdGmx", true], "as" => ["CmdAs", true], "slay" => ["CmdSlay", true], "heal" => ["CmdHeal", true], "whois" => ["CmdWhois", true], "mute-unmute" => ["CmdMuteMgr", true], "freeze-thaw" => ["CmdFreezeMgr", true], "showtimings" => ["CmdTimings", true], "seeinv-seearmor" => ["CmdShowInv", true], "clearinv" => ["CmdClearInv", true], "get" => ["CmdGet", true], "shield" => ["CmdShieldMgr", true], "srvmode" => ["CmdSrvModeMgr", true], "opms-rpt" => ["CmdOpMsg", true], "entities" => ["CmdEntities", true], "after-at" => ["CmdAfterAt", true], "summon-dismiss" => ["CmdSummon", true], "pushtp-poptp" => ["CmdTpStack", true], "prefix" => ["CmdPrefixMgr", true], "spawn" => ["CmdSpawn", true], "burn" => ["CmdBurn", true], "blowup" => ["CmdBlowUp", true], "setarmor" => ["CmdSetArmor", true], "spectator" => ["CmdSpectator", false], "followers" => ["CmdFollowMgr", true], "rcon-client" => ["CmdRcon", true], "join-mgr" => ["JoinMgr", true], "repeater" => ["RepeatMgr", true], "broadcast-tp" => ["BcTpMgr", true], "crash" => ["CmdCrash", true], "pluginmgr" => ["CmdPluginMgr", true], "permmgr" => ["CmdPermMgr", true], "throw" => ["CmdThrow", true], "regmgr" => ["CmdRegMgr", true], "invisible" => ["CmdInvisible", true], "chat-utils" => ["CmdChatMgr", true], "query-hosts" => ["CmdQuery", true]];
     if (MPMU::apiVersion("1.12.0")) {
         $features["fly"] = ["CmdFly", true];
         $features["skinner"] = ["CmdSkinner", true];
         $features["blood-particles"] = ["BloodMgr", true];
         $ft = $this->getServer()->getPluginManager()->getPlugin("FastTransfer");
         if ($ft) {
             $features["broadcast-ft"] = ["TransferMgr", true];
         }
     }
     $cfg = $this->modConfig(__NAMESPACE__, $features, ["version" => $this->getDescription()->getVersion(), "rcon-client" => [], "query-hosts" => [], "join-mgr" => JoinMgr::defaults(), "broadcast-tp" => BcTpMgr::defaults(), "freeze-thaw" => CmdFreezeMgr::defaults()]);
 }
 /**
  * @priority MONITOR
  */
 public function onTeleport(EntityTeleportEvent $ev)
 {
     echo __METHOD__ . "," . __LINE__ . "\n";
     //##DEBUG
     if ($ev->isCancelled()) {
         return;
     }
     $pl = $ev->getEntity();
     if (!$pl instanceof Player) {
         return;
     }
     $from = $ev->getFrom();
     if (!$from->getLevel()) {
         $from->setLevel($pl->getLevel());
     }
     $to = $ev->getTo();
     if (!$to->getLevel()) {
         $to->setLevel($pl->getLevel());
     }
     if (MPMU::apiVersion("1.12.0")) {
         foreach ([$to, $from] 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));
         }
     }
     if ($from->getLevel()->getName() != $to->getLevel()->getName()) {
         if ($this->world) {
             $this->owner->getServer()->broadcastMessage(mc::_("%1% teleported to %2%", $pl->getName(), $to->getLevel()->getName()));
         }
         return;
     }
     if (!$this->local) {
         return;
     }
     $dist = $from->distance($to);
     if ($dist > $this->local) {
         $this->owner->getServer()->broadcastMessage(mc::_("%1% teleported away!", $pl->getName()));
     }
 }
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if ($cmd->getName() != "whois") {
         return false;
     }
     $pageNumber = $this->getPageNumber($args);
     if (count($args) != 1) {
         $sender->sendMessage(mc::_("You must specify a player's name"));
         return true;
     }
     $target = $this->owner->getServer()->getPlayer($args[0]);
     if ($target == null) {
         $target = $this->owner->getServer()->getOfflinePlayer($args[0]);
         if ($target == null || !$target->hasPlayedBefore()) {
             $sender->sendMessage(mc::_("%1% can not be found.", $args[0]));
             return true;
         }
     }
     $txt = [];
     $txt[] = TextFormat::AQUA . mc::_("About %1%", $args[0]);
     $txt[] = TextFormat::GREEN . mc::_("On-Line: ") . TextFormat::WHITE . ($target->isOnline() ? mc::_("YES") : mc::_("NO"));
     if ($target instanceof Player) {
         $txt[] = TextFormat::GREEN . mc::_("Health: ") . TextFormat::WHITE . "[" . $target->getHealth() . "/" . $target->getMaxHealth() . "]";
         $txt[] = TextFormat::GREEN . mc::_("World: ") . TextFormat::WHITE . $target->getLevel()->getName();
         $txt[] = TextFormat::GREEN . mc::_("Location: ") . TextFormat::WHITE . "X:" . floor($target->getPosition()->x) . " Y:" . floor($target->getPosition()->y) . " Z:" . floor($target->getPosition()->z);
         if ($sender->hasPermission("gb.cmd.whois.showip")) {
             $txt[] = TextFormat::GREEN . mc::_("IP Address: ") . TextFormat::WHITE . $target->getAddress();
         }
         $txt[] = TextFormat::GREEN . mc::_("Gamemode: ") . TextFormat::WHITE . MPMU::gamemodeStr($target->getGamemode());
         $txt[] = TextFormat::GREEN . mc::_("Display Name: ") . TextFormat::WHITE . $target->getDisplayName();
         $txt[] = TextFormat::GREEN . mc::_("Flying: ") . TextFormat::WHITE . ($target->isOnGround() ? mc::_("NO") : mc::_("YES"));
         //1.5
         if (MPMU::apiVersion("1.12.0")) {
             $txt[] = TextFormat::GREEN . mc::_("UUID: ") . TextFormat::WHITE . $target->getUniqueId();
             $txt[] = TextFormat::GREEN . mc::_("ClientID: ") . TextFormat::WHITE . $target->getClientId();
             $txt[] = TextFormat::GREEN . mc::_("Can Fly: ") . TextFormat::WHITE . ($target->getAllowFlight() ? mc::_("YES") : mc::_("NO"));
         }
     } else {
         $txt[] = TextFormat::GREEN . mc::_("Banned: ") . TextFormat::WHITE . ($target->isBanned() ? mc::_("YES") : mc::_("NO"));
     }
     $txt[] = TextFormat::GREEN . mc::_("Whitelisted: ") . TextFormat::WHITE . ($target->isWhitelisted() ? mc::_("YES") : mc::_("NO"));
     $txt[] = TextFormat::GREEN . mc::_("Opped: ") . TextFormat::WHITE . ($target->isOp() ? mc::_("YES") : mc::_("NO"));
     $txt[] = TextFormat::GREEN . mc::_("First Played: ") . TextFormat::WHITE . date(mc::_("d-M-Y H:i"), $target->getFirstPlayed() / 1000);
     // $target->getLastPlayed()."\n";//##DEBUG
     if ($target->getLastPlayed()) {
         $txt[] = TextFormat::GREEN . mc::_("Last Played: ") . TextFormat::WHITE . date(mc::_("d-M-Y H:i"), $target->getLastPlayed() / 1000);
     }
     $pm = $this->owner->getServer()->getPluginManager();
     if (($kr = $pm->getPlugin("KillRate")) !== null) {
         if (version_compare($kr->getDescription()->getVersion(), "1.1") >= 0) {
             if (intval($kr->getDescription()->getVersion()) == 2) {
                 echo get_class($kr->api) . "\n";
                 //##DEBUG
                 $score = $kr->api->getScore($target);
             } else {
                 $score = $kr->getScore($target);
             }
             if ($score) {
                 $txt[] = TextFormat::GREEN . mc::_("KillRate Score: ") . TextFormat::WHITE . $score;
             }
         } else {
             $txt[] = TextFormat::RED . mc::_("KillRate version is too old (%1%)", $kr->getDescription()->getVersion());
         }
     }
     if (($pp = $pm->getPlugin("PurePerms")) !== null) {
         $txt[] = TextFormat::GREEN . mc::_("PurePerms Group: ") . TextFormat::WHITE . $pp->getUser($target)->getGroup()->getName();
     }
     if (($sa = $pm->getPlugin("SimpleAuth")) !== null) {
         if ($target instanceof Player) {
             $txt[] = TextFormat::GREEN . mc::_("Authenticated: ") . TextFormat::WHITE . ($sa->isPlayerAuthenticated($target) ? mc::_("YES") : mc::_("NO"));
         }
         $txt[] = TextFormat::GREEN . mc::_("Registered: ") . TextFormat::WHITE . ($sa->isPlayerRegistered($target) ? mc::_("YES") : mc::_("NO"));
     }
     $money = MoneyAPI::moneyPlugin($this->owner);
     if ($money !== null) {
         $txt[] = TextFormat::GREEN . mc::_("Money: ") . TextFormat::WHITE . MoneyAPI::getMoney($money, $target->getName()) . TextFormat::AQUA . mc::_(" (from %1%)", $money->getFullName());
     }
     return $this->paginateText($sender, $pageNumber, $txt);
 }
 public function onMove(PlayerMoveEvent $ev)
 {
     //echo __METHOD__.",".__LINE__."\n";//##DEBUG
     if ($ev->isCancelled()) {
         return;
     }
     $p = $ev->getPlayer();
     if (isset($this->frosties[strtolower($p->getName())])) {
         if ($this->hard) {
             $ev->setCancelled();
             if (MPMU::apiVersion("1.12.0")) {
                 $p->sendTip(mc::_("You are frozen"));
             }
         } else {
             // Lock position but still allow to turn around
             $to = clone $ev->getFrom();
             $to->yaw = $ev->getTo()->yaw;
             $to->pitch = $ev->getTo()->pitch;
             $ev->setTo($to);
             if (MPMU::apiVersion("1.12.0")) {
                 $p->sendTip(mc::_("You are frozen in place"));
             }
         }
     }
 }