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; } $patient = $this->owner->getServer()->getPlayer($args[0]); if ($patient == null) { $sender->sendMessage(mc::_("%1% not found.", $args[0])); 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 (!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) { 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) > 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 (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 ($cmd->getName() != "spawn") { return false; } if (count($args) != 0) { return false; } if (!MPMU::inGame($sender)) { return true; } $pos = $sender->getLevel()->getSafeSpawn(); $sender->sendMessage("Teleporting to spawn..."); $sender->teleport($pos); return true; }
public function onCommand(CommandSender $sender, Command $cmd, $label, array $args) { if (!MPMU::inGame($sender)) { return true; } if ($cmd->getName() != "fly") { return false; } if ($sender->getAllowFlight()) { $sender->sendMessage(mc::_("Disabling flight mode")); $sender->setAllowFlight(false); } else { $sender->sendMessage(mc::_("Enabling flight mode")); $sender->setAllowFlight(true); } 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; } switch ($cmd->getName()) { case "clearinv": $target->getInventory()->clearAll(); if ($other) { $target->sendMessage(mc::_("Your inventory has been cleared by %1%", $sender->getName())); } $sender->sendMessage(mc::_("%1%'s inventory cleared", $target->getName())); return true; case "clearhotbar": $inv = $target->getInventory(); for ($i = 0; $i < $inv->getHotbarSize(); $i++) { $inv->setHotbarSlotIndex($i, -1); } if ($other) { $target->sendMessage(mc::_("Your hotbar has been cleared by %1%", $sender->getName())); } $sender->sendMessage(mc::_("%1%'s hotbar cleared", $target->getName())); // Make sure inventory is updated... $inv->sendContents($target); return true; } 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->setState($sender, false); } else { $sender->sendMessage(mc::_("Shields UP")); $this->setState($sender, true); } return true; }
private 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; }
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; }
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->sendName(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->chat = false; $this->owner->getServer()->broadcastMessage(mc::_("Chat disabled globally from %1%", $sender->getName())); } else { $this->chat = 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 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; }
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 = glob($this->owner->getDataFolder() . "*.skin"); 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 "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; } $fn = preg_replace('/\\.skin$/', '', basename($args[0])) . ".skin"; $bin = zlib_encode($human->getSkinData(), ZLIB_ENCODING_DEFLATE, 9); file_put_contents($this->owner->getDataFolder() . $fn, $bin); $sender->sendMessage(mc::_("Wrote %1% bytes to %2%", strlen($bin), $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; } $fn = preg_replace('/\\.skin$/', '', basename($args[0])) . ".skin"; $bin = file_get_contents($this->owner->getDataFolder() . $fn); if ($bin === false) { $sender->sendMessage(mc::_("Unable to read %1%", $fn)); return true; } $human->setSkin(zlib_decode($bin), $slim); $sender->sendMessage(mc::_("Updated skin for %1%", $human->getName())); return true; } return false; }
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); $player = $this->owner->getServer()->getPlayer($n); if (!$player) { $sender->sendMessage(mc::_("%1% not found.", $n)); 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) { $player = $this->owner->getServer()->getPlayer($n); if (!$player) { $sender->sendMessage(mc::_("%1% not found.", $n)); continue; } $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; }
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 = 0; foreach ($target->getInventory()->getContents() as $slot => &$inv) { if ($inv->getId() != $item->getId()) { continue; } if ($count !== null) { if ($inv->getCount() > $count) { $k += $count; $inv->setCount($inv->getCount() - $count); $target->getInventory()->setItem($slot, clone $inv); break; } $count -= $inv->getCount(); } $k += $inv->getCount(); $target->getInventory()->clear($slot); if ($count === 0) { break; } } 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; }