Package net.canarymod.commandsys.commands

Source Code of net.canarymod.commandsys.commands.PlayerInformation

package net.canarymod.commandsys.commands;

import net.canarymod.Canary;
import net.canarymod.ToolBox;
import net.canarymod.api.OfflinePlayer;
import net.canarymod.api.entity.living.humanoid.Player;
import net.canarymod.api.world.position.Location;
import net.canarymod.api.world.position.Position;
import net.canarymod.chat.MessageReceiver;
import net.canarymod.chat.TextFormat;
import net.canarymod.commandsys.NativeCommand;
import net.canarymod.user.Group;
import net.canarymod.warp.Warp;

/**
* Command to view multiple types of info about a player (possible yourself)
*
* @author Jason (darkdiplomat)
*/
public class PlayerInformation implements NativeCommand {

    @Override
    public void execute(MessageReceiver caller, String[] args) {
        Player subject = null;
        if (args.length == 2) {
            subject = Canary.getServer().matchPlayer(args[1]);
        }
        else if (caller instanceof Player) {
            subject = (Player) caller;
        }
        if (subject != null) {
            caller.message(TextFormat.GREEN + subject.getName() + "'s info:");
            sendData(caller, "First Joined: ", subject.getFirstJoined());
            sendData(caller, "Time Played: ", ToolBox.getTimeUntil(subject.getTimePlayed()));
            sendData(caller, "Muted: ", subject.isMuted());
            sendData(caller, "Prefix: ", subject.getPrefix());
            sendData(caller, "IP: ", subject.getIP());
            sendData(caller, "Primary Group: ", subject.getGroup().getName());
            sendData(caller, "Other Groups: ", subject.getPlayerGroups());
            sendData(caller, "Health: ", subject.getHealth());
            sendData(caller, "Mode: ", subject.getMode());
            sendData(caller, "Food Level: ", subject.getHunger());
            sendData(caller, "Food Exhaustion: ", String.format("%.2f", subject.getExhaustionLevel()));
            sendData(caller, "XP Level: ", subject.getLevel());
            sendData(caller, "XP Total: ", subject.getExperience());
            Location l = subject.getLocation();

            sendData(caller, "Position: ", String.format("X: %.2f Y: %.2f Z: %.2f Pitch: %.2f Yawn: %.2f", l.getX(), l.getY(), l.getZ(), l.getRotation(), l.getPitch()));
            sendData(caller, "World: ", subject.getWorld().getFqName());
            Warp home = Canary.warps().getHome(subject.getName());

            if (home != null) {
                l = home.getLocation();
                sendData(caller, "Home: ", String.format("X: %.2f Y: %.2f Z: %.2f", l.getX(), l.getY(), l.getZ()));
            }
            else {
                sendData(caller, "Home: ", "Not set");
            }
        }
        else if (args.length == 2) {
            OfflinePlayer oSubject = Canary.getServer().getOfflinePlayer(args[1]);
            if (oSubject != null) {
                caller.message(TextFormat.GREEN + oSubject.getName() + "'s Offline info:");
                sendData(caller, "First Joined: ", oSubject.getFirstJoined());
                sendData(caller, "Time Played: ", ToolBox.getTimeUntil(oSubject.getTimePlayed()));
                sendData(caller, "Muted: ", oSubject.isMuted());
                sendData(caller, "Prefix: ", oSubject.getPrefix());
                sendData(caller, "Primary Group: ", oSubject.getGroup().getName());
                sendData(caller, "Other Groups: ", oSubject.getPlayerGroups());
                Position l = oSubject.getPosition();
                sendData(caller, "Position: ", String.format("X: %.2f Y: %.2f Z: %.2f", l.getX(), l.getY(), l.getZ()));
                sendData(caller, "World: ", oSubject.getWorld().getFqName());
                Warp home = Canary.warps().getHome(oSubject.getName());
                if (home != null) {
                    l = home.getLocation();
                    sendData(caller, "Home: ", String.format("X: %.2f Y: %.2f Z: %.2f", l.getX(), l.getY(), l.getZ()));
                }
                else {
                    sendData(caller, "Home: ", "Not set");
                }
            }
            else {
                caller.notice("Can't find player " + args[1]);
            }
        }
    }

    private void sendData(MessageReceiver caller, String caption, Group[] data) {
        StringBuilder gnames = new StringBuilder("");
        for (int index = 1; index < data.length; index++) {
            gnames.append(data[index].getName());
        }
        caller.message(TextFormat.LIGHT_GREEN + caption + TextFormat.ORANGE + gnames.toString());
    }

    private void sendData(MessageReceiver caller, String caption, Object data) {
        caller.message(TextFormat.LIGHT_GREEN + caption + TextFormat.ORANGE + String.valueOf(data));
    }

}
TOP

Related Classes of net.canarymod.commandsys.commands.PlayerInformation

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.