本文整理汇总了PHP中pocketmine\utils\MainLogger::getLogger方法的典型用法代码示例。如果您正苦于以下问题:PHP MainLogger::getLogger方法的具体用法?PHP MainLogger::getLogger怎么用?PHP MainLogger::getLogger使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pocketmine\utils\MainLogger
的用法示例。
在下文中一共展示了MainLogger::getLogger方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: log
public static function log($logger, $flag, $msg, $timeout = 5)
{
if (isset(self::$msgs[$flag])) {
if (microtime(true) - self::$msgs[$flag] < $timeout) {
return;
}
}
self::$msgs[$flag] = microtime(true);
if ($logger instanceof \Logger) {
$logger->notice($msg);
} else {
MainLogger::getLogger()->notice($msg);
}
}
示例2: __construct
public function __construct()
{
// load recipes from src/pocketmine/recipes.json
$recipes = new Config(Server::getInstance()->getFilePath() . "src/pocketmine/resources/recipes.json", Config::JSON, []);
MainLogger::getLogger()->info("Loading recipes...");
foreach ($recipes->getAll() as $recipe) {
switch ($recipe["Type"]) {
case 0:
// TODO: handle multiple result items
if (count($recipe["Result"]) == 1) {
$first = $recipe["Result"][0];
$result = new ShapelessRecipe(Item::get($first["ID"], $first["Damage"], $first["Count"]));
foreach ($recipe["Ingredients"] as $ingredient) {
$result->addIngredient(Item::get($ingredient["ID"], $ingredient["Damage"], $ingredient["Count"]));
}
$this->registerRecipe($result);
}
break;
case 1:
// TODO: handle multiple result items
if (count($recipe["Result"]) == 1) {
$first = $recipe["Result"][0];
$result = new ShapedRecipe(Item::get($first["ID"], $first["Damage"], $first["Count"]), $recipe["Height"], $recipe["Width"]);
$shape = array_chunk($recipe["Ingredients"], $recipe["Width"]);
foreach ($shape as $y => $row) {
foreach ($row as $x => $ingredient) {
$result->addIngredient($x, $y, Item::get($ingredient["ID"], $ingredient["Damage"] < 0 ? null : $ingredient["Damage"], $ingredient["Count"]));
}
}
$this->registerRecipe($result);
}
break;
case 2:
$result = $recipe["Result"];
$resultItem = Item::get($result["ID"], $result["Damage"], $result["Count"]);
$this->registerRecipe(new FurnaceRecipe($resultItem, Item::get($recipe["Ingredients"], 0, 1)));
break;
case 3:
$result = $recipe["Result"];
$resultItem = Item::get($result["ID"], $result["Damage"], $result["Count"]);
$this->registerRecipe(new FurnaceRecipe($resultItem, Item::get($recipe["Ingredients"]["ID"], $recipe["Ingredients"]["Damage"], 1)));
break;
default:
break;
}
}
}
示例3: parseInfo
public function parseInfo()
{
$this->seek(0);
if (fread($this->fp, 3) !== "PMF") {
return false;
}
$this->version = ord($this->read(1));
switch ($this->version) {
case 0x1:
$this->type = ord($this->read(1));
break;
default:
MainLogger::getLogger()->alert("Tried loading non-supported PMF version " . $this->version . " on file " . $this->file);
return false;
}
return true;
}
示例4: query
public function query($msg, $fetch, ...$args)
{
foreach ($args as &$arg) {
if (is_string($arg)) {
$arg = "'" . $this->mysqli->escape_string($arg) . "'";
} else {
$arg = "{$arg}";
}
}
if (count($args) > 0) {
try {
if ($fetch !== 3) {
$result = $this->mysqli->query($query = sprintf($msg, ...$args));
} else {
return sprintf($msg, ...$args);
}
} catch (\RuntimeException $e) {
MainLogger::getLogger()->alert($e->getTraceAsString());
MainLogger::getLogger()->alert("Query: " . TextFormat::YELLOW . $msg);
MainLogger::getLogger()->alert("Args: " . var_export($args, true));
return null;
}
} else {
$result = $this->mysqli->query($query = $msg);
// to make it faster
}
if ($result === false) {
$server = Server::getInstance();
$server->getLogger()->warning("Query failed! Query:");
$server->getLogger()->warning($query);
$server->getLogger()->warning("Message: " . $this->mysqli->error);
}
if ($result instanceof \mysqli_result) {
if ($fetch === self::ASSOC) {
return $result->fetch_assoc();
} elseif ($fetch === self::ALL) {
return $result->fetch_all(MYSQLI_ASSOC);
}
return $result;
}
return $result;
}
示例5: sendMessage
/**
* @param string $message
*/
public function sendMessage($message)
{
if ($message instanceof TextContainer) {
$message = $this->getServer()->getLanguage()->translate($message);
} else {
$message = $this->getServer()->getLanguage()->translateString($message);
}
foreach (explode("\n", trim($message)) as $line) {
MainLogger::getLogger()->info($line);
}
}
示例6: fromString
/**
* @param string $str
*
* @return BanEntry
*/
public static function fromString($str)
{
if (strlen($str) < 2) {
return null;
} else {
$str = explode("|", trim($str));
$entry = new BanEntry(trim(array_shift($str)));
if (count($str) > 0) {
$datetime = \DateTime::createFromFormat(self::$format, array_shift($str));
if (!$datetime instanceof \DateTime) {
MainLogger::getLogger()->alert("Error parsing date for BanEntry for player \"" . $entry->getName() . "\", the format may be invalid!");
return $entry;
}
$entry->setCreated($datetime);
if (count($str) > 0) {
$entry->setSource(trim(array_shift($str)));
if (count($str) > 0) {
$expire = trim(array_shift($str));
if (strtolower($expire) !== "forever" and strlen($expire) > 0) {
$entry->setExpires(\DateTime::createFromFormat(self::$format, $expire));
}
if (count($str) > 0) {
$entry->setReason(trim(array_shift($str)));
}
}
}
}
return $entry;
}
}
示例7: loadChunk
public function loadChunk($X, $Z)
{
if ($this->isChunkLoaded($X, $Z)) {
return true;
}
$index = self::getIndex($X, $Z);
$path = $this->getChunkPath($X, $Z);
if (!file_exists($path)) {
if ($this->generateChunk($X, $Z) === false) {
return false;
}
if ($this->isGenerating === 0) {
$this->populateChunk($X, $Z);
}
return true;
}
$chunk = file_get_contents($path);
if ($chunk === false) {
return false;
}
$chunk = zlib_decode($chunk);
$offset = 0;
$this->chunkInfo[$index] = [0 => ord($chunk[0]), 1 => Binary::readInt(substr($chunk, 1, 4))];
$offset += 5;
$len = Binary::readInt(substr($chunk, $offset, 4));
$offset += 4;
$nbt = new NBT(NBT::BIG_ENDIAN);
$nbt->read(substr($chunk, $offset, $len));
$this->chunkInfo[$index][2] = $nbt->getData();
$offset += $len;
$this->chunks[$index] = [];
$this->chunkChange[$index] = [-1 => false];
$this->chunkInfo[$index][3] = substr($chunk, $offset, 256);
//Biome data
$offset += 256;
for ($Y = 0; $Y < 8; ++$Y) {
if (($this->chunkInfo[$index][0] & 1 << $Y) !== 0) {
// 4096 + 2048 + 2048, Block Data, Meta, Light
if (strlen($this->chunks[$index][$Y] = substr($chunk, $offset, 8192)) < 8192) {
MainLogger::getLogger()->notice("Empty corrupt chunk detected [{$X},{$Z},:{$Y}], recovering contents");
$this->fillMiniChunk($X, $Z, $Y);
}
$offset += 8192;
} else {
$this->chunks[$index][$Y] = false;
}
}
if ($this->isGenerating === 0 and !$this->isPopulated($X, $Z)) {
$this->populateChunk($X, $Z);
}
return true;
}
示例8: save
public function save($flag = \true)
{
$this->removeExpired();
$fp = @\fopen($this->file, "w");
if (\is_resource($fp)) {
if ($flag === \true) {
\fwrite($fp, "# Updated " . \strftime("%x %H:%M", \time()) . " by " . Server::getInstance()->getName() . " " . Server::getInstance()->getPocketMineVersion() . "\n");
\fwrite($fp, "# victim name | ban date | banned by | banned until | reason\n\n");
}
foreach ($this->list as $entry) {
\fwrite($fp, $entry->getString() . "\n");
}
\fclose($fp);
} else {
MainLogger::getLogger()->error("Could not save ban list");
}
}
示例9: tell
/**
* Send to the subscriber a message
* @param string $msg a string message, could be formatted in the sprintf() method
* @param string ...$args arguments to be formatted in sprintf()
* @return void
*/
public function tell($msg, ...$args)
{
try {
MainLogger::getLogger()->info(sprintf($msg, ...$args));
} catch (\RuntimeException $e) {
var_dump($msg, $args, $e);
}
}
示例10: readChunk
public function readChunk($x, $z)
{
$index = self::getChunkOffset($x, $z);
if ($index < 0 or $index >= 4096) {
return \null;
}
$this->lastUsed = \time();
if (!$this->isChunkGenerated($index)) {
return \null;
}
\fseek($this->filePointer, $this->locationTable[$index][0] << 12);
$length = \unpack("N", \fread($this->filePointer, 4))[1] << 32 >> 32;
$compression = \ord(\fgetc($this->filePointer));
if ($length <= 0 or $length > self::MAX_SECTOR_LENGTH) {
//Not yet generated / corrupted
if ($length >= self::MAX_SECTOR_LENGTH) {
$this->locationTable[$index][0] = ++$this->lastSector;
$this->locationTable[$index][1] = 1;
MainLogger::getLogger()->error("Corrupted chunk header detected");
}
return \null;
}
if ($length > $this->locationTable[$index][1] << 12) {
//Invalid chunk, bigger than defined number of sectors
MainLogger::getLogger()->error("Corrupted bigger chunk detected");
$this->locationTable[$index][1] = $length >> 12;
$this->writeLocationIndex($index);
} elseif ($compression !== self::COMPRESSION_ZLIB and $compression !== self::COMPRESSION_GZIP) {
MainLogger::getLogger()->error("Invalid compression type");
return \null;
}
$chunk = $this->unserializeChunk(\fread($this->filePointer, $length - 1));
if ($chunk instanceof FullChunk) {
return $chunk;
} else {
MainLogger::getLogger()->error("Corrupted chunk detected");
return \null;
}
}
示例11: sendMessage
/**
* @param string $message
*/
public function sendMessage($message)
{
foreach (\explode("\n", \trim($message)) as $line) {
MainLogger::getLogger()->info($line);
}
}
示例12: readChunk
public function readChunk($x, $z, $generate = true, $forward = false)
{
$index = self::getChunkOffset($x, $z);
if ($index < 0 or $index >= 4096) {
return null;
}
$this->lastUsed = time();
if (!$this->isChunkGenerated($index)) {
if ($generate === true) {
//Allocate space
$this->locationTable[$index][0] = ++$this->lastSector;
$this->locationTable[$index][1] = 1;
fseek($this->filePointer, $this->locationTable[$index][0] << 12);
fwrite($this->filePointer, str_pad(pack("N", 0) . chr(self::COMPRESSION_ZLIB), 4096, "", STR_PAD_RIGHT));
$this->writeLocationIndex($index);
} else {
return null;
}
}
fseek($this->filePointer, $this->locationTable[$index][0] << 12);
$length = PHP_INT_SIZE === 8 ? unpack("N", fread($this->filePointer, 4))[1] << 32 >> 32 : unpack("N", fread($this->filePointer, 4))[1];
$compression = ord(fgetc($this->filePointer));
if ($length <= 0 or $length > self::MAX_SECTOR_LENGTH) {
//Not yet generated / corrupted
if ($length >= self::MAX_SECTOR_LENGTH) {
$this->locationTable[$index][0] = ++$this->lastSector;
$this->locationTable[$index][1] = 1;
MainLogger::getLogger()->error("Corrupted chunk header detected");
}
$this->generateChunk($x, $z);
fseek($this->filePointer, $this->locationTable[$index][0] << 12);
$length = PHP_INT_SIZE === 8 ? unpack("N", fread($this->filePointer, 4))[1] << 32 >> 32 : unpack("N", fread($this->filePointer, 4))[1];
$compression = ord(fgetc($this->filePointer));
}
if ($length > $this->locationTable[$index][1] << 12) {
//Invalid chunk, bigger than defined number of sectors
MainLogger::getLogger()->error("Corrupted bigger chunk detected");
$this->locationTable[$index][1] = $length >> 12;
$this->writeLocationIndex($index);
} elseif ($compression !== self::COMPRESSION_ZLIB and $compression !== self::COMPRESSION_GZIP) {
MainLogger::getLogger()->error("Invalid compression type");
return null;
}
$chunk = Chunk::fromBinary(fread($this->filePointer, $length - 1), $this->levelProvider);
if ($chunk instanceof Chunk) {
return $chunk;
} elseif ($forward === false) {
MainLogger::getLogger()->error("Corrupted chunk detected");
$this->generateChunk($x, $z);
return $this->readChunk($x, $z, $generate, true);
} else {
return null;
}
}
示例13: import
public function import()
{
if (file_exists($this->path . "tileEntities.dat")) {
//OldPM
$level = unserialize(file_get_contents($this->path . "level.dat"));
MainLogger::getLogger()->info("Importing OldPM level \"" . $level["LevelName"] . "\" to PMF format");
$entities = new Config($this->path . "entities.yml", Config::YAML, unserialize(file_get_contents($this->path . "entities.dat")));
$entities->save();
$tiles = new Config($this->path . "tiles.yml", Config::YAML, unserialize(file_get_contents($this->path . "tileEntities.dat")));
$tiles->save();
} elseif (file_exists($this->path . "chunks.dat") and file_exists($this->path . "level.dat")) {
//Pocket
$nbt = new NBT(NBT::LITTLE_ENDIAN);
$nbt->read(substr(file_get_contents($this->path . "level.dat"), 8));
$level = $nbt->getData();
if ($level["LevelName"] == "") {
$level["LevelName"] = "world" . time();
}
MainLogger::getLogger()->info("Importing Pocket level \"" . $level->LevelName . "\" to PMF format");
unset($level->Player);
$nbt->read(substr(file_get_contents($this->path . "entities.dat"), 12));
$entities = $nbt->getData();
if (!isset($entities->TileEntities)) {
$entities->TileEntities = [];
}
$tiles = $entities->TileEntities;
$entities = $entities->Entities;
$entities = new Config($this->path . "entities.yml", Config::YAML, $entities);
$entities->save();
$tiles = new Config($this->path . "tiles.yml", Config::YAML, $tiles);
$tiles->save();
} else {
return false;
}
$pmf = new LevelFormat($this->path . "level.pmf", ["name" => $level->LevelName, "seed" => $level->RandomSeed, "time" => $level->Time, "spawnX" => $level->SpawnX, "spawnY" => $level->SpawnY, "spawnZ" => $level->SpawnZ, "height" => 8, "generator" => "default", "generatorSettings" => "", "extra" => ""]);
$chunks = new PocketChunkParser();
$chunks->loadFile($this->path . "chunks.dat");
$chunks->loadMap();
for ($Z = 0; $Z < 16; ++$Z) {
for ($X = 0; $X < 16; ++$X) {
$chunk = [0 => "", 1 => "", 2 => "", 3 => "", 4 => "", 5 => "", 6 => "", 7 => ""];
$pmf->initCleanChunk($X, $Z);
for ($z = 0; $z < 16; ++$z) {
for ($x = 0; $x < 16; ++$x) {
$block = $chunks->getChunkColumn($X, $Z, $x, $z, 0);
$meta = $chunks->getChunkColumn($X, $Z, $x, $z, 1);
for ($Y = 0; $Y < 8; ++$Y) {
$chunk[$Y] .= substr($block, $Y << 4, 16);
$chunk[$Y] .= substr($meta, $Y << 3, 8);
$chunk[$Y] .= "";
}
}
}
foreach ($chunk as $Y => $data) {
$pmf->setMiniChunk($X, $Z, $Y, $data);
}
$pmf->setPopulated($X, $Z);
$pmf->saveChunk($X, $Z);
}
MainLogger::getLogger()->notice("Importing level " . ceil(($Z + 1) / 0.16) . "%");
}
$chunks->map = null;
$chunks = null;
@unlink($this->path . "level.dat");
@unlink($this->path . "level.dat_old");
@unlink($this->path . "player.dat");
@unlink($this->path . "entities.dat");
@unlink($this->path . "chunks.dat");
@unlink($this->path . "chunks.dat.gz");
@unlink($this->path . "tiles.dat");
unset($chunks, $level, $entities, $tiles, $nbt);
return true;
}
示例14: onDisable
public function onDisable()
{
MainLogger::getLogger()->info(TextFormat::LIGHT_PURPLE . "AntiFly disabled.");
}
示例15: readChunk
public function readChunk($x, $z, $generate = true, $forward = false)
{
$index = self::getChunkOffset($x, $z);
if ($index < 0 or $index >= 4096) {
//Regenerate chunk due to corruption
$this->locationTable[$index][0] = 0;
$this->locationTable[$index][1] = 1;
}
if (!$this->isChunkGenerated($index)) {
if ($generate === true) {
//Allocate space
$this->locationTable[$index][0] = ++$this->lastSector;
$this->locationTable[$index][1] = 1;
fseek($this->filePointer, $this->locationTable[$index][0] << 12);
fwrite($this->filePointer, str_pad(Binary::writeInt(-1) . chr(self::COMPRESSION_ZLIB), 4096, "", STR_PAD_RIGHT));
$this->writeLocationIndex($index);
} else {
return false;
}
}
fseek($this->filePointer, $this->locationTable[$index][0] << 12);
$length = Binary::readInt(fread($this->filePointer, 4));
$compression = ord(fgetc($this->filePointer));
if ($length <= 0) {
//Not yet generated
$this->generateChunk($x, $z);
fseek($this->filePointer, $this->locationTable[$index][0] << 12);
$length = Binary::readInt(fread($this->filePointer, 4));
$compression = ord(fgetc($this->filePointer));
}
if ($length > $this->locationTable[$index][1] << 12) {
//Invalid chunk, bigger than defined number of sectors
MainLogger::getLogger()->error("Corrupted chunk detected");
$this->locationTable[$index][1] = $length >> 12;
$this->writeLocationIndex($index);
} elseif ($compression !== self::COMPRESSION_ZLIB and $compression !== self::COMPRESSION_GZIP) {
MainLogger::getLogger()->error("Invalid compression type");
return false;
}
$chunk = Chunk::fromBinary(fread($this->filePointer, $length - 1), $this->levelProvider);
if ($chunk instanceof Chunk) {
return $chunk;
} elseif ($forward === false) {
MainLogger::getLogger()->error("Corrupted chunk detected");
$this->generateChunk($x, $z);
return $this->readChunk($x, $z, $generate, true);
} else {
return null;
}
}