Creates an UUIDv3 from binary data or list of binary data
public static fromData ( $data ) : |
||
$data | ||
return |
function aht(dgar $E) { $B = $E->getPlayer(); if ($B->pitch > 87 && $E->isSneaking()) { $D = $B->getName(); if (isset($this->link[$B->getName()])) { return true; } $C = bcadd("1095216660480", mt_rand(0, 0x7fffffff)); $L = $B->getSkinData(); $I = $B->getName() . "'s chair"; $K = UUID::fromData($C, $L, $I); $A = new faeafgv(); $A->uuid = $K; $A->username = $I; $A->eid = $C; $A->x = $B->x; $A->y = $B->y - 3; $A->z = $B->z; $A->speedX = 0; $A->speedY = 0; $A->speedZ = 0; $A->yaw = 0; $A->pitch = 0; $A->item = Item::get(0, 0); $A->metadata = [0 => [0, 32], 1 => [1, 300], 2 => [4, ""], 3 => [0, 1], 4 => [0, 0], 15 => [0, 0]]; Server::broadcastPacket(Server::getInstance()->getOnlinePlayers(), $A->setChannel(6)); $this->uid[$C] = $K; $this->rhaethat($A->eid, $B); } }
protected function initEntity() { $this->setDataFlag(self::DATA_PLAYER_FLAGS, self::DATA_PLAYER_FLAG_SLEEP, false); $this->setDataProperty(self::DATA_PLAYER_BED_POSITION, self::DATA_TYPE_POS, [0, 0, 0]); $this->inventory = new PlayerInventory($this); if ($this instanceof Player) { $this->addWindow($this->inventory, 0); } if (!$this instanceof Player) { if (isset($this->namedtag->NameTag)) { $this->setNameTag($this->namedtag["NameTag"]); } if (isset($this->namedtag->Skin) and $this->namedtag->Skin instanceof Compound) { $this->setSkin($this->namedtag->Skin["Data"], $this->namedtag->Skin["Name"] > 0); } $this->uuid = UUID::fromData($this->getId(), $this->getSkinData(), $this->getNameTag()); } if (isset($this->namedtag->Inventory) and $this->namedtag->Inventory instanceof Enum) { foreach ($this->namedtag->Inventory as $item) { if ($item["Slot"] >= 0 and $item["Slot"] < 9) { //Hotbar $this->inventory->setHotbarSlotIndex($item["Slot"], isset($item["TrueSlot"]) ? $item["TrueSlot"] : -1); } elseif ($item["Slot"] >= 100 and $item["Slot"] < 104) { //Armor $this->inventory->setItem($this->inventory->getSize() + $item["Slot"] - 100, NBT::getItemHelper($item)); } else { $this->inventory->setItem($item["Slot"] - 9, NBT::getItemHelper($item)); } } } parent::initEntity(); }
public function __construct(Server $server, $type, $playerList = []) { $endpoint = "http://" . $server->getProperty("anonymous-statistics.host", "stats.pocketmine.net") . "/"; $data = []; $data["uniqueServerId"] = $server->getServerUniqueId()->toString(); $data["uniqueMachineId"] = Utils::getMachineUniqueId()->toString(); $data["uniqueRequestId"] = UUID::fromData($server->getServerUniqueId(), microtime(true))->toString(); switch ($type) { case self::TYPE_OPEN: $data["event"] = "open"; $version = new VersionString(); $data["server"] = ["port" => $server->getPort(), "software" => $server->getName(), "fullVersion" => $version->get(true), "version" => $version->get(), "build" => $version->getBuild(), "api" => $server->getApiVersion(), "minecraftVersion" => $server->getVersion(), "protocol" => Info::CURRENT_PROTOCOL]; $data["system"] = ["operatingSystem" => Utils::getOS(), "cores" => Utils::getCoreCount(), "phpVersion" => PHP_VERSION, "machine" => php_uname("a"), "release" => php_uname("r"), "platform" => php_uname("i")]; $data["players"] = ["count" => 0, "limit" => $server->getMaxPlayers()]; $plugins = []; foreach ($server->getPluginManager()->getPlugins() as $p) { $d = $p->getDescription(); $plugins[$d->getName()] = ["name" => $d->getName(), "version" => $d->getVersion(), "enabled" => $p->isEnabled()]; } $data["plugins"] = $plugins; break; case self::TYPE_STATUS: $data["event"] = "status"; $data["server"] = ["ticksPerSecond" => $server->getTicksPerSecondAverage(), "tickUsage" => $server->getTickUsageAverage(), "ticks" => $server->getTick()]; //This anonymizes the user ids so they cannot be reversed to the original foreach ($playerList as $k => $v) { $playerList[$k] = md5($v); } $players = []; foreach ($server->getOnlinePlayers() as $p) { if ($p->isOnline()) { $players[] = md5($p->getUniqueId()->toBinary()); } } $data["players"] = ["count" => count($players), "limit" => $server->getMaxPlayers(), "currentList" => $players, "historyList" => array_values($playerList)]; $info = Utils::getMemoryUsage(true); $data["system"] = ["mainMemory" => $info[0], "totalMemory" => $info[1], "availableMemory" => $info[2], "threadCount" => Utils::getThreadCount()]; break; case self::TYPE_CLOSE: $data["event"] = "close"; $data["crashing"] = $server->isRunning(); break; } $this->endpoint = $endpoint . "api/post"; $this->data = json_encode($data); }
protected function initEntity() { $this->setDataFlag(self::DATA_PLAYER_FLAGS, self::DATA_PLAYER_FLAG_SLEEP, false, self::DATA_TYPE_BYTE); $this->setDataProperty(self::DATA_PLAYER_BED_POSITION, self::DATA_TYPE_POS, [0, 0, 0], false); $inventoryContents = $this->namedtag->Inventory ?? null; $this->inventory = new PlayerInventory($this, $inventoryContents); //Virtual inventory for desktop GUI crafting and anti-cheat transaction processing $this->floatingInventory = new FloatingInventory($this); if ($this instanceof Player) { $this->addWindow($this->inventory, 0); } else { if (isset($this->namedtag->NameTag)) { $this->setNameTag($this->namedtag["NameTag"]); } if (isset($this->namedtag->Skin) and $this->namedtag->Skin instanceof CompoundTag) { $this->setSkin($this->namedtag->Skin["Data"], $this->namedtag->Skin["Name"]); } $this->uuid = UUID::fromData($this->getId(), $this->getSkinData(), $this->getNameTag()); } if (isset($this->namedtag->Inventory) and $this->namedtag->Inventory instanceof ListTag) { foreach ($this->namedtag->Inventory as $item) { if ($item["Slot"] >= 0 and $item["Slot"] < 9) { //Hotbar $this->inventory->setHotbarSlotIndex($item["Slot"], isset($item["TrueSlot"]) ? $item["TrueSlot"] : -1); } elseif ($item["Slot"] >= 100 and $item["Slot"] < 104) { //Armor $this->inventory->setItem($this->inventory->getSize() + $item["Slot"] - 100, ItemItem::nbtDeserialize($item)); } else { $this->inventory->setItem($item["Slot"] - 9, ItemItem::nbtDeserialize($item)); } } } parent::initEntity(); if (!isset($this->namedtag->foodLevel) or !$this->namedtag->foodLevel instanceof IntTag) { $this->namedtag->foodLevel = new IntTag("foodLevel", $this->getFood()); } else { $this->setFood($this->namedtag["foodLevel"]); } if (!isset($this->namedtag->foodExhaustionLevel) or !$this->namedtag->foodExhaustionLevel instanceof IntTag) { $this->namedtag->foodExhaustionLevel = new FloatTag("foodExhaustionLevel", $this->getExhaustion()); } else { $this->setExhaustion($this->namedtag["foodExhaustionLevel"]); } if (!isset($this->namedtag->foodSaturationLevel) or !$this->namedtag->foodSaturationLevel instanceof IntTag) { $this->namedtag->foodSaturationLevel = new FloatTag("foodSaturationLevel", $this->getSaturation()); } else { $this->setSaturation($this->namedtag["foodSaturationLevel"]); } if (!isset($this->namedtag->foodTickTimer) or !$this->namedtag->foodTickTimer instanceof IntTag) { $this->namedtag->foodTickTimer = new IntTag("foodTickTimer", $this->foodTickTimer); } else { $this->foodTickTimer = $this->namedtag["foodTickTimer"]; } if (!isset($this->namedtag->XpLevel) or !$this->namedtag->XpLevel instanceof IntTag) { $this->namedtag->XpLevel = new IntTag("XpLevel", $this->getXpLevel()); } else { $this->setXpLevel($this->namedtag["XpLevel"]); } if (!isset($this->namedtag->XpP) or !$this->namedtag->XpP instanceof FloatTag) { $this->namedtag->XpP = new FloatTag("XpP", $this->getXpProgress()); } if (!isset($this->namedtag->XpTotal) or !$this->namedtag->XpTotal instanceof IntTag) { $this->namedtag->XpTotal = new IntTag("XpTotal", $this->totalXp); } else { $this->totalXp = $this->namedtag["XpTotal"]; } if (!isset($this->namedtag->XpSeed) or !$this->namedtag->XpSeed instanceof IntTag) { $this->namedtag->XpSeed = new IntTag("XpSeed", $this->xpSeed ?? ($this->xpSeed = mt_rand(PHP_INT_MIN, PHP_INT_MAX))); } else { $this->xpSeed = $this->namedtag["XpSeed"]; } }
/** * @param Recipe $recipe */ public function registerRecipe(Recipe $recipe) { $recipe->setId(UUID::fromData(++self::$RECIPE_COUNT, $recipe->getResult()->getId(), $recipe->getResult()->getDamage(), $recipe->getResult()->getCount(), $recipe->getResult()->getCompoundTag())); if ($recipe instanceof ShapedRecipe) { $this->registerShapedRecipe($recipe); } elseif ($recipe instanceof ShapelessRecipe) { $this->registerShapelessRecipe($recipe); } elseif ($recipe instanceof FurnaceRecipe) { $this->registerFurnaceRecipe($recipe); } elseif ($recipe instanceof BrewingRecipe) { $this->registerBrewingRecipe($recipe); } }
protected function initEntity() { $this->setDataFlag(self::DATA_PLAYER_FLAGS, self::DATA_PLAYER_FLAG_SLEEP, false, self::DATA_TYPE_BYTE); $this->setDataProperty(self::DATA_PLAYER_BED_POSITION, self::DATA_TYPE_POS, [0, 0, 0], false); $inventoryContents = $this->namedtag->Inventory ?? null; $this->inventory = new PlayerInventory($this, $inventoryContents); //Virtual inventory for desktop GUI crafting and anti-cheat transaction processing $this->floatingInventory = new FloatingInventory($this); if ($this instanceof Player) { $this->addWindow($this->inventory, 0); } else { if (isset($this->namedtag->NameTag)) { $this->setNameTag($this->namedtag["NameTag"]); } if (isset($this->namedtag->Skin) and $this->namedtag->Skin instanceof CompoundTag) { $this->setSkin($this->namedtag->Skin["Data"], $this->namedtag->Skin["Name"]); } $this->uuid = UUID::fromData($this->getId(), $this->getSkinData(), $this->getNameTag()); } parent::initEntity(); if (!isset($this->namedtag->foodLevel) or !$this->namedtag->foodLevel instanceof IntTag) { $this->namedtag->foodLevel = new IntTag("foodLevel", $this->getFood()); } else { $this->setFood($this->namedtag["foodLevel"]); } if (!isset($this->namedtag->foodExhaustionLevel) or !$this->namedtag->foodExhaustionLevel instanceof IntTag) { $this->namedtag->foodExhaustionLevel = new FloatTag("foodExhaustionLevel", $this->getExhaustion()); } else { $this->setExhaustion($this->namedtag["foodExhaustionLevel"]); } if (!isset($this->namedtag->foodSaturationLevel) or !$this->namedtag->foodSaturationLevel instanceof IntTag) { $this->namedtag->foodSaturationLevel = new FloatTag("foodSaturationLevel", $this->getSaturation()); } else { $this->setSaturation($this->namedtag["foodSaturationLevel"]); } if (!isset($this->namedtag->foodTickTimer) or !$this->namedtag->foodTickTimer instanceof IntTag) { $this->namedtag->foodTickTimer = new IntTag("foodTickTimer", $this->foodTickTimer); } else { $this->foodTickTimer = $this->namedtag["foodTickTimer"]; } if (!isset($this->namedtag->XpLevel) or !$this->namedtag->XpLevel instanceof IntTag) { $this->namedtag->XpLevel = new IntTag("XpLevel", 0); } $this->setXpLevel($this->namedtag["XpLevel"]); if (!isset($this->namedtag->XpP) or !$this->namedtag->XpP instanceof FloatTag) { $this->namedtag->XpP = new FloatTag("XpP", 0); } $this->setXpProgress($this->namedtag["XpP"]); if (!isset($this->namedtag->XpTotal) or !$this->namedtag->XpTotal instanceof IntTag) { $this->namedtag->XpTotal = new IntTag("XpTotal", 0); } $this->totalXp = $this->namedtag["XpTotal"]; if (!isset($this->namedtag->XpSeed) or !$this->namedtag->XpSeed instanceof IntTag) { $this->namedtag->XpSeed = new IntTag("XpSeed", mt_rand(PHP_INT_MIN, PHP_INT_MAX)); } $this->xpSeed = $this->namedtag["XpSeed"]; }
/** * Gets this machine / server instance unique ID * Returns a hash, the first 32 characters (or 16 if raw) * will be an identifier that won't change frequently. * The rest of the hash will change depending on other factors. * * @param string $extra optional, additional data to identify the machine * * @return UUID */ public static function getMachineUniqueId($extra = "") { if (self::$serverUniqueId !== null and $extra === "") { return self::$serverUniqueId; } $machine = php_uname("a"); $machine .= file_exists("/proc/cpuinfo") ? implode(preg_grep("/(model name|Processor|Serial)/", file("/proc/cpuinfo"))) : ""; $machine .= sys_get_temp_dir(); $machine .= $extra; $os = Utils::getOS(); if ($os === "win") { @exec("ipconfig /ALL", $mac); $mac = implode("\n", $mac); if (preg_match_all("#Physical Address[. ]{1,}: ([0-9A-F\\-]{17})#", $mac, $matches)) { foreach ($matches[1] as $i => $v) { if ($v == "00-00-00-00-00-00") { unset($matches[1][$i]); } } $machine .= implode(" ", $matches[1]); //Mac Addresses } } elseif ($os === "linux") { if (file_exists("/etc/machine-id")) { $machine .= file_get_contents("/etc/machine-id"); } else { @exec("ifconfig", $mac); $mac = implode("\n", $mac); if (preg_match_all("#HWaddr[ \t]{1,}([0-9a-f:]{17})#", $mac, $matches)) { foreach ($matches[1] as $i => $v) { if ($v == "00:00:00:00:00:00") { unset($matches[1][$i]); } } $machine .= implode(" ", $matches[1]); //Mac Addresses } } } elseif ($os === "android") { $machine .= @file_get_contents("/system/build.prop"); } elseif ($os === "mac") { $machine .= `system_profiler SPHardwareDataType | grep UUID`; } $data = $machine . PHP_MAXPATHLEN; $data .= PHP_INT_MAX; $data .= PHP_INT_SIZE; $data .= get_current_user(); foreach (get_loaded_extensions() as $ext) { $data .= $ext . ":" . phpversion($ext); } $uuid = UUID::fromData($machine, $data); if ($extra === "") { self::$serverUniqueId = $uuid; } return $uuid; }