<?php if(!defined("MCR")){ exit("Hacking Attempt!"); } use xPaw\MinecraftQuery; use xPaw\MinecraftQueryException; class monitoring{ private $ip, $port, $socket; public $data, $type; public function __construct($type=0){ $this->type = $type; switch($type){ default: $this->socket = $this->get_socket_libs(); break; } } private function get_socket_libs(){ require_once(MCR_TOOL_PATH.'libs/status_query/MinecraftQuery.php'); require_once(MCR_TOOL_PATH.'libs/status_query/MinecraftQueryException.php'); return new MinecraftQuery(); } private function socket_connection($ip, $port){ try{ $this->socket->Connect($ip, $port, 5); } catch( MinecraftQueryException $e ) { $exception = $e; } if(isset($exception) || ($data = $this->socket->GetInfo()) === false){ return false; } $array = array( 'status' => 'online', 'title' => $data['HostName'], 'type' => $data['GameType'], 'version' => $data['Version'], 'players' => intval($data['Players']), 'slots' => intval($data['MaxPlayers']), 'player_list' => array() ); if(($list = $this->socket->GetPlayers()) !== false){ $array['player_list'] = $list; } return $array; } private function minetools_connection($ip, $port){ $json = file_get_contents("http://www.api.minetools.eu/query/$ip/$port"); if(!$json){ return false; } $data = @json_decode($json, true); if(!$data || isset($data['error'])){ return false; } $array = array( 'status' => 'online', 'type' => $data['GameType'], 'version' => $data['Version'], 'players' => intval($data['Players']), 'slots' => intval($data['MaxPlayers']) ); $array['title'] = (is_null($data['HostName'])) ? '' : $data['HostName']; $array['player_list'] = ($data['Playerlist']=='null') ? array() : $data['Playerlist']; return $array; } public function connect($ip='localhost', $port=25565){ $array = array( 'status' => 'offline', 'title' => '', 'type' => 'SMT', 'version' => 0, 'players' => 0, 'slots' => 0, 'player_list' => array() ); $this->data = json_encode($array); if($this->type==1){ $data = $this->minetools_connection($ip, $port); if($data===false){ return false; } }else{ $data = $this->socket_connection($ip, $port); if($data===false){ return false; } } $this->data = json_encode($data); return true; } } ?>