2013-01-15 23:55:41 +01:00
package com.gmail.nossr50.commands.mc ;
2013-01-16 08:50:18 +01:00
import org.bukkit.Bukkit ;
2013-01-15 23:55:41 +01:00
import org.bukkit.command.Command ;
import org.bukkit.command.CommandExecutor ;
import org.bukkit.command.CommandSender ;
import org.bukkit.entity.Player ;
2013-01-16 23:37:35 +01:00
import com.gmail.nossr50.commands.CommandHelper ;
2013-01-15 23:55:41 +01:00
import com.gmail.nossr50.config.Config ;
2013-01-16 20:58:14 +01:00
import com.gmail.nossr50.locale.LocaleLoader ;
2013-01-16 23:13:56 +01:00
import com.gmail.nossr50.runnables.McRankAsync ;
2013-01-22 18:43:25 +01:00
import com.gmail.nossr50.skills.SkillType ;
2013-01-26 23:01:55 +01:00
import com.gmail.nossr50.skills.SkillTools ;
2013-01-15 23:55:41 +01:00
import com.gmail.nossr50.util.Leaderboard ;
public class McrankCommand implements CommandExecutor {
2013-01-16 00:35:21 +01:00
@Override
2013-01-16 08:50:18 +01:00
public boolean onCommand ( CommandSender sender , Command command , String label , String [ ] args ) {
2013-01-16 23:37:35 +01:00
//TODO: Better input handling, add usage string
if ( ! Config . getInstance ( ) . getUseMySQL ( ) ) {
Leaderboard . updateLeaderboards ( ) ; //Make sure the information is up to date
}
if ( CommandHelper . noConsoleUsage ( sender ) ) {
return true ;
}
Player player = ( Player ) sender ;
String playerName ;
switch ( args . length ) {
2013-01-21 23:22:54 +01:00
case 0 :
playerName = player . getName ( ) ;
break ;
2013-01-16 23:37:35 +01:00
2013-01-21 23:22:54 +01:00
case 1 :
playerName = args [ 0 ] ;
break ;
2013-01-16 00:35:21 +01:00
2013-01-21 23:22:54 +01:00
default :
return false ;
2013-01-16 23:37:35 +01:00
}
if ( Config . getInstance ( ) . getUseMySQL ( ) ) {
sqlDisplay ( sender , playerName ) ;
}
else {
flatfileDisplay ( sender , playerName ) ;
2013-01-16 00:35:21 +01:00
}
return true ;
}
2013-01-16 01:09:48 +01:00
public void flatfileDisplay ( CommandSender sender , String playerName ) {
2013-01-16 23:13:04 +01:00
sender . sendMessage ( LocaleLoader . getString ( " Commands.mcrank.Heading " ) ) ;
sender . sendMessage ( LocaleLoader . getString ( " Commands.mcrank.Player " , new Object [ ] { playerName } ) ) ;
2013-01-16 00:35:21 +01:00
for ( SkillType skillType : SkillType . values ( ) ) {
2013-01-16 23:13:04 +01:00
int [ ] rankInts = Leaderboard . getPlayerRank ( playerName , skillType ) ;
2013-01-24 15:08:30 +01:00
if ( skillType . isChildSkill ( ) ) {
continue ;
}
2013-01-16 23:13:04 +01:00
2013-01-16 23:37:35 +01:00
if ( skillType . equals ( SkillType . ALL ) ) {
2013-01-16 00:35:21 +01:00
continue ; // We want the overall ranking to be at the bottom
2013-01-16 23:37:35 +01:00
}
2013-01-16 23:13:04 +01:00
2013-01-16 20:58:14 +01:00
if ( rankInts [ 1 ] = = 0 ) {
2013-01-26 23:01:55 +01:00
sender . sendMessage ( LocaleLoader . getString ( " Commands.mcrank.Skill " , new Object [ ] { SkillTools . localizeSkillName ( skillType ) , LocaleLoader . getString ( " Commands.mcrank.Unranked " ) } ) ) ; //Don't bother showing ranking for players without skills
2013-01-16 23:37:35 +01:00
}
else {
2013-01-26 23:01:55 +01:00
sender . sendMessage ( LocaleLoader . getString ( " Commands.mcrank.Skill " , new Object [ ] { SkillTools . localizeSkillName ( skillType ) , String . valueOf ( rankInts [ 0 ] ) } ) ) ;
2013-01-16 20:58:14 +01:00
}
}
2013-01-16 23:13:04 +01:00
2013-01-16 20:58:14 +01:00
//Show the powerlevel ranking
int [ ] rankInts = Leaderboard . getPlayerRank ( playerName , SkillType . ALL ) ;
2013-01-21 23:22:54 +01:00
2013-01-16 20:58:14 +01:00
if ( rankInts [ 1 ] = = 0 ) {
2013-01-16 23:13:04 +01:00
sender . sendMessage ( LocaleLoader . getString ( " Commands.mcrank.Overalll " , new Object [ ] { LocaleLoader . getString ( " Commands.mcrank.Unranked " ) } ) ) ; //Don't bother showing ranking for players without skills
2013-01-16 23:37:35 +01:00
}
else {
2013-01-16 23:13:04 +01:00
sender . sendMessage ( LocaleLoader . getString ( " Commands.mcrank.Overall " , new Object [ ] { String . valueOf ( rankInts [ 0 ] ) } ) ) ;
2013-01-16 00:35:21 +01:00
}
}
private void sqlDisplay ( CommandSender sender , String playerName ) {
2013-01-16 23:13:56 +01:00
Bukkit . getScheduler ( ) . runTaskAsynchronously ( Bukkit . getPluginManager ( ) . getPlugin ( " mcMMO " ) , new McRankAsync ( playerName , sender ) ) ;
2013-01-16 00:35:21 +01:00
}
}