public function execute(CommandSender $sender, $currentAlias, array $args) { if (!$this->testPermission($sender)) { return true; } if (count($args) === 0) { $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); return false; } $gameMode = Server::getGamemodeFromString($args[0]); if ($gameMode !== -1) { $sender->getServer()->setConfigInt("gamemode", $gameMode); $sender->sendMessage(new TranslationContainer("commands.defaultgamemode.success", [Server::getGamemodeString($gameMode)])); } else { $sender->sendMessage("Unknown game mode"); } return true; }
public function execute(CommandSender $sender, $currentAlias, array $args) { if (!$this->testPermission($sender)) { return \true; } if (\count($args) === 0) { $sender->sendMessage(TextFormat::RED . "Usage: " . $this->usageMessage); return \false; } $gameMode = Server::getGamemodeFromString($args[0]); if ($gameMode !== -1) { $sender->getServer()->setConfigInt("gamemode", $gameMode); $sender->sendMessage("Default game mode set to " . \strtolower(Server::getGamemodeString($gameMode))); } else { $sender->sendMessage("Unknown game mode"); } return \true; }
public function execute(CommandSender $sender, $currentAlias, array $args) { if (!$this->testPermission($sender)) { return \true; } if (\count($args) === 0) { $sender->sendMessage(TextFormat::RED . "Usage: " . $this->usageMessage); return \false; } $gameMode = Server::getGamemodeFromString($args[0]); if ($gameMode === -1) { $sender->sendMessage("Unknown game mode"); return \true; } $target = $sender; if (isset($args[1])) { $target = $sender->getServer()->getPlayer($args[1]); if ($target === \null) { $sender->sendMessage("Can't find player " . $args[1]); return \true; } } elseif (!$sender instanceof Player) { $sender->sendMessage(TextFormat::RED . "Usage: " . $this->usageMessage); return \true; } if ($gameMode !== $target->getGamemode()) { $target->setGamemode($gameMode); if ($gameMode !== $target->getGamemode()) { $sender->sendMessage("Game mode change for " . $target->getName() . " failed!"); } else { if ($target === $sender) { Command::broadcastCommandMessage($sender, "Set own gamemode to " . \strtolower(Server::getGamemodeString($gameMode)) . " mode"); } else { Command::broadcastCommandMessage($sender, "Set " . $target->getName() . "'s gamemode to " . \strtolower(Server::getGamemodeString($gameMode)) . " mode"); } } } else { $sender->sendMessage($target->getName() . " already has game mode " . \strtolower(Server::getGamemodeString($gameMode))); return \true; } return \true; }
public function execute(CommandSender $sender, $currentAlias, array $args) { if (!$this->testPermission($sender)) { return \true; } if (\count($args) === 0) { $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); return \false; } $gameMode = Server::getGamemodeFromString($args[0]); if ($gameMode === -1) { $sender->sendMessage("Unknown game mode"); return \true; } $target = $sender; if (isset($args[1])) { $target = $sender->getServer()->getPlayer($args[1]); if ($target === \null) { $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.player.notFound")); return \true; } } elseif (!$sender instanceof Player) { $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); return \true; } $target->setGamemode($gameMode); if ($gameMode !== $target->getGamemode()) { $sender->sendMessage("Game mode change for " . $target->getName() . " failed!"); } else { if ($target === $sender) { Command::broadcastCommandMessage($sender, new TranslationContainer("commands.gamemode.success.self", [Server::getGamemodeString($gameMode)])); } else { $target->sendMessage(new TranslationContainer("gameMode.changed")); Command::broadcastCommandMessage($sender, new TranslationContainer("commands.gamemode.success.other", [$target->getName(), Server::getGamemodeString($gameMode)])); } } return \true; }
/** * Sets the gamemode, and if needed, kicks the player * TODO: Check if Mojang adds the ability to change gamemode without kicking players * * @param int $gm * * @return bool */ public function setGamemode($gm) { if ($gm < 0 or $gm > 3 or $this->gamemode === $gm) { return false; } $this->server->getPluginManager()->callEvent($ev = new PlayerGameModeChangeEvent($this, (int) $gm)); if ($ev->isCancelled()) { return false; } if (($this->gamemode & 0x1) === ($gm & 0x1)) { $this->gamemode = $gm; $this->sendMessage("Your gamemode has been changed to " . Server::getGamemodeString($this->getGamemode()) . ".\n"); } else { $this->gamemode = $gm; $this->sendMessage("Your gamemode has been changed to " . Server::getGamemodeString($this->getGamemode()) . ".\n"); $this->inventory->clearAll(); $this->inventory->sendContents($this->getViewers()); $this->inventory->sendHeldItem($this->hasSpawned); } $this->namedtag->playerGameType = new Int("playerGameType", $this->gamemode); $spawnPosition = $this->getSpawn(); $pk = new StartGamePacket(); $pk->seed = $this->level->getSeed(); $pk->x = $this->x; $pk->y = $this->y + $this->getEyeHeight(); $pk->z = $this->z; $pk->spawnX = (int) $spawnPosition->x; $pk->spawnY = (int) $spawnPosition->y; $pk->spawnZ = (int) $spawnPosition->z; $pk->generator = 1; //0 old, 1 infinite, 2 flat $pk->gamemode = $this->gamemode & 0x1; $pk->eid = 0; //Always use EntityID as zero for the actual player $this->dataPacket($pk); $this->sendSettings(); return true; }
/** * Sets the gamemode, and if needed, kicks the Player. * * @param int $gm * @param bool $client if the client made this change in their GUI * * @return bool */ public function setGamemode(int $gm, bool $client = false) { if ($gm < 0 or $gm > 3 or $this->gamemode === $gm) { return false; } $this->server->getPluginManager()->callEvent($ev = new PlayerGameModeChangeEvent($this, (int) $gm)); if ($ev->isCancelled()) { if ($client) { //gamemode change by client in the GUI $pk = new SetPlayerGameTypePacket(); $pk->gamemode = $this->gamemode & 0x1; $this->dataPacket($pk); $this->sendSettings(); } return false; } $this->gamemode = $gm; $this->allowFlight = $this->isCreative(); if ($this->isSpectator()) { $this->flying = true; $this->despawnFromAll(); // Client automatically turns off flight controls when on the ground. // A combination of this hack and a new AdventureSettings flag FINALLY // fixes spectator flight controls. Thank @robske110 for this hack. $this->teleport($this->temporalVector->setComponents($this->x, $this->y + 0.1, $this->z)); } else { if ($this->isSurvival()) { $this->flying = false; } $this->spawnToAll(); } $this->resetFallDistance(); $this->namedtag->playerGameType = new IntTag("playerGameType", $this->gamemode); if (!$client) { //Gamemode changed by server, do not send for client changes $pk = new SetPlayerGameTypePacket(); $pk->gamemode = $this->gamemode & 0x1; $this->dataPacket($pk); $this->sendSettings(); } else { Command::broadcastCommandMessage($this, new TranslationContainer("commands.gamemode.success.self", [Server::getGamemodeString($gm)])); } $this->inventory->sendContents($this); $this->inventory->sendContents($this->getViewers()); $this->inventory->sendHeldItem($this->hasSpawned); if ($this->isCreative()) { $this->inventory->sendCreativeContents(); } return true; }
public function setGamemode(Player $player, $gm) { if ($gm < 0 or $gm > 3 or $player->gamemode === $gm) { return \false; } $player->getServer()->getPluginManager()->callEvent($ev = new PlayerGameModeChangeEvent($player, (int) $gm)); if ($ev->isCancelled()) { return false; } if (($player->gamemode & 0x1) === ($gm & 0x1)) { $player->gamemode = $gm; $player->sendMessage(TextFormat::DARK_AQUA . "게임모드가 변경되었습니다, " . Server::getGamemodeString($player->getGamemode()) . ".\n"); } else { $player->gamemode = $gm; $player->sendMessage(TextFormat::DARK_AQUA . "게임모드가 변경되었습니다, " . Server::getGamemodeString($player->getGamemode()) . ".\n"); $player->getInventory()->clearAll(); $player->getInventory()->sendContents($player->getViewers()); $player->getInventory()->sendHeldItem($player->getViewers()); } $player->namedtag->playerGameType = new Int("playerGameType", $player->gamemode); $player->sendMessage(TextFormat::DARK_AQUA . "새 게임모드 적용을 위해 서버에서 킥처리됩니다."); $this->getServer()->getScheduler()->scheduleDelayedTask(new CallbackTask([$this, "Kick"], [$player]), 50); return true; }
public function onEnable() { $this->saveDefaultConfig(); self::$token = $this->getConfig()->get("token", ""); self::$defaultChannel = $this->getConfig()->get("defaultChannel", ""); self::$updateInterval = $this->getConfig()->get("updateInterval", 20); if (self::$token === "") { $this->getLogger()->alert("You need to set your Telegram bot token to enable this plugin"); $this->getLogger()->alert("-> " . $this->getDataFolder() . "config.yml"); $this->getServer()->getPluginManager()->disablePlugin($this); return; } self::$broadcastToTelegram = $this->getConfig()->get("broadcastToTelegram", true); self::$broadcastTelegramMessages = $this->getConfig()->get("broadcastTelegramMessages", true); self::$enableTelegramCommands = $this->getConfig()->get("enableTelegramCommands", true); self::$disableWebPagePreview = $this->getConfig()->get("disableWebPagePreview", true); self::$enableMarkdownParsing = $this->getConfig()->get("enableMarkdownParsing", false); self::$debugMode = $this->getConfig()->get("debugMode", false); $handler = new EventHandler(); $this->getServer()->getPluginManager()->registerEvents($handler, $this); $this->getServer()->getPluginManager()->subscribeToPermission(Server::BROADCAST_CHANNEL_USERS, $handler); PocketTelegram::getMe(); PocketTelegram::getUpdates(); if ($this->getConfig()->get("broadcastServerStart", false) === true) { PocketTelegram::sendMessage(PocketTelegram::translateString("pocketmine.server.start", [TextFormat::AQUA . $this->getServer()->getVersion()]) . PHP_EOL . PocketTelegram::translateString("pocketmine.server.defaultGameMode", [Server::getGamemodeString($this->getServer()->getGamemode())]) . PHP_EOL . PHP_EOL . "#" . $this->getServer()->getMotd(), self::$defaultChannel); } }