<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class MinecraftModel extends CI_Model {

    public function __construct() {
        parent::__construct();
    }

    public function getUUID($username) {
        $json = json_decode(@file_get_contents('https://api.mojang.com/users/profiles/minecraft/' . $username));

        if(empty($json)) {
            return ["Nicht vorhanden", $username, true];
        } else {
            $uuid = $json->id;
            $name = $json->name;
            return [$uuid, $name, false];
        }
    }
    public function getIcon($user) {
        return "https://crafatar.com/avatars/" . $user . "?overlay&size=64&default=MHF_Alex";
    }
    public function getRender($user) {
        return "https://crafatar.com/renders/body/" . $user . "?overlay&scale=7&default=MHF_Alex";
    }
    public function serverIcon($server) {
        return "https://craftapi.com/api/server/favicon/" . $server;
    }
    public function getServerName($server) {
        $json = json_decode(@file_get_contents('https://craftapi.com/api/server/info/' . $server));

        if(!empty($json->error) || empty($json)) {
            return lang('servers_error_ip');
        } else {
            return $json->server;
        }
    }
    public function getPlayers($server) {
        $json = json_decode(@file_get_contents('https://craftapi.com/api/server/info/' . $server));

        if (!empty($json->error)) {
            return lang('servers_error');
        } else {
            $online = $json->players->online;
            $max = $json->players->max;
            $ping = floatval($json->latency) * 1000;
            $version = $json->version->name;

            if($online < $max) {
                $color = "#00AA00";
            } else {
                $color = "#FFAA00";
            }

            return [$online, $max, $color, $ping, $version];
        }
    }
    public function getMOTD($server) {
        $json = json_decode(@file_get_contents('https://craftapi.com/api/server/info/' . $server));

        if(!empty($json->error) || empty($json)) {
            return lang('servers_error');
        } else {
            return $json->motd;
        }
    }
    public function getHistory($uuid) {
        $json = json_decode(@file_get_contents('https://craftapi.com/api/user/namehistory/' . $uuid));

        $return = '';
        if(!empty($json)) {
            foreach($json as $element) {
                $name = $element->name;

                if(!empty($element->changedToAt)) {
                    $milliseconds = floatval($element->changedToAt);
                    $date = date("d.m.Y \u\m H:i:s", $milliseconds/1000);
                    $changedtoat = $date . " Uhr";
                } else {
                    $changedtoat = "<i>" . lang('player_original_name') . "</i>";
                }

                $return .= "<tr><td>" . $name . "</td><td>" . $changedtoat . "</td></tr>";
            }
            return $return;
        } else {
            return null;
        }
    }

    public function formatUUID($uuid) {
        $return = $uuid;
        $return = substr_replace($return, '-' . $uuid[8], 8, -23);
        $return = substr_replace($return, '-' . $uuid[12], 13, -19);
        $return = substr_replace($return, '-' . $uuid[16], 18, -15);
        $return = substr_replace($return, '-' . $uuid[20], 23, -11);

        return $return;
    }
}