/******************************************************************************* * Copyright 2014 Tobias Welther * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package de.tobiyas.racesandclasses.commands.statistics; import java.util.concurrent.TimeUnit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import de.tobiyas.racesandclasses.RacesAndClasses; import de.tobiyas.racesandclasses.APIs.StatisticAPI; import de.tobiyas.racesandclasses.commands.AbstractCommand; import de.tobiyas.racesandclasses.statistics.StartupStatisticCategory; import de.tobiyas.racesandclasses.util.consts.PermissionNode; public class CommandExecutor_Statistics extends AbstractCommand { private RacesAndClasses plugin; public CommandExecutor_Statistics(){ super("racstatistics", new String[]{"racs"}); plugin = RacesAndClasses.getPlugin(); } @Override public boolean onInternalCommand(CommandSender sender, Command command, String label, String[] args) { if(!plugin.getPermissionManager().checkPermissions(sender, PermissionNode.statistics)){ return true; } if(args.length > 0){ String traitName = ""; for(String arg : args){ traitName += arg + " "; } traitName = traitName.trim(); showStatisticToTrait(sender, traitName); }else{ sendHelp(sender); } return true; } private void showStatisticToTrait(CommandSender sender, String traitName) { if(traitName.equalsIgnoreCase("total")){ showOverallStatistics(sender); return; } if(traitName.equalsIgnoreCase("startup")){ showStartupStatistics(sender); return; } if(traitName.equalsIgnoreCase("loadedplayers")){ showLoadedPlayers(sender); return; } sender.sendMessage(ChatColor.YELLOW + "==== " + ChatColor.AQUA + "Statistics to: " + ChatColor.LIGHT_PURPLE + traitName + ChatColor.YELLOW + " ===="); long totalEvents = StatisticAPI.getTotalTriggersOfTrait(traitName); if(totalEvents < 0){ sender.sendMessage(ChatColor.RED + "The Trait: " + ChatColor.LIGHT_PURPLE + traitName + ChatColor.RED + " does not exist."); return; } sender.sendMessage(ChatColor.LIGHT_PURPLE + "Total events on Trait " + ChatColor.DARK_PURPLE + traitName + ChatColor.LIGHT_PURPLE + ": " + ChatColor.AQUA + totalEvents); double eventsPerMin = StatisticAPI.getTotalTriggersOfTraitPerMinute(traitName); sender.sendMessage(ChatColor.LIGHT_PURPLE + "Events / Minute on Trait " + ChatColor.DARK_PURPLE + traitName + ChatColor.LIGHT_PURPLE + ": " + ChatColor.AQUA + eventsPerMin); long timeUsedForTrait = StatisticAPI.getTraitsUsedTime(traitName); String formated = String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes(timeUsedForTrait), TimeUnit.MILLISECONDS.toSeconds(timeUsedForTrait) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(timeUsedForTrait)) ); sender.sendMessage(ChatColor.LIGHT_PURPLE + "Time used for Trait: " + ChatColor.AQUA + formated); } private void showLoadedPlayers(CommandSender sender) { sender.sendMessage(ChatColor.YELLOW + "Loaded Players: " + plugin.getPlayerManager().getPlayerNumber()); } private void showStartupStatistics(CommandSender sender) { sender.sendMessage(ChatColor.YELLOW + "===== STARTUP ====="); sender.sendMessage(ChatColor.LIGHT_PURPLE + "Timings are in: " + ChatColor.LIGHT_PURPLE + "Millisecond"); for(StartupStatisticCategory category : StartupStatisticCategory.values()){ sender.sendMessage(ChatColor.GREEN + category.name() + ": " + ChatColor.LIGHT_PURPLE + category.timeInMiliSeconds); } } private void showOverallStatistics(CommandSender sender) { sender.sendMessage(ChatColor.YELLOW + "==== " + ChatColor.AQUA + "Overall Statistics " + ChatColor.YELLOW + " ===="); String timeRunning = StatisticAPI.getTimeRunning(); sender.sendMessage(ChatColor.LIGHT_PURPLE + "Time running: " + ChatColor.AQUA + timeRunning); long totalEvents = StatisticAPI.getEventsTriggeredTotal(); sender.sendMessage(ChatColor.LIGHT_PURPLE + "Total events: " + ChatColor.AQUA + totalEvents); double eventsPerMin = StatisticAPI.getEventsTotalPerMinute(); sender.sendMessage(ChatColor.LIGHT_PURPLE + "Events / Minute: " + ChatColor.AQUA + eventsPerMin); long totalTimeUsed = StatisticAPI.getTotalTraitsUsedTime(); String formated = String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes(totalTimeUsed), TimeUnit.MILLISECONDS.toSeconds(totalTimeUsed) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(totalTimeUsed)) ); sender.sendMessage(ChatColor.LIGHT_PURPLE + "Time used in Total: " + ChatColor.AQUA + formated); } private void sendHelp(CommandSender sender) { sender.sendMessage(ChatColor.YELLOW + "[RaC]" + ChatColor.RED + " Use this command as following: " + ChatColor.LIGHT_PURPLE + "/racstatistics <traitname>"); sender.sendMessage(ChatColor.YELLOW + "[RAC]" + ChatColor.RED + " Use " + ChatColor.LIGHT_PURPLE + "/racestatistics total" + ChatColor.RED + " to see the total statistics."); sender.sendMessage(ChatColor.YELLOW + "[RAC]" + ChatColor.RED + " Use " + ChatColor.LIGHT_PURPLE + "/racestatistics startup" + ChatColor.RED + " to see startup statistics."); } }