2011-04-08 15:51:07 +02:00
package org.mcteam.factions.commands ;
2011-03-22 15:45:41 +01:00
2011-04-08 15:51:07 +02:00
import org.mcteam.factions.Conf ;
import org.mcteam.factions.FPlayer ;
import org.mcteam.factions.Faction ;
2011-07-09 05:06:55 +02:00
import org.mcteam.factions.Factions ;
2011-03-22 15:45:41 +01:00
public class FCommandKick extends FBaseCommand {
public FCommandKick ( ) {
2011-03-22 18:48:09 +01:00
aliases . add ( " kick " ) ;
2011-03-22 15:45:41 +01:00
requiredParameters . add ( " player name " ) ;
helpDescription = " Kick a player from the faction " ;
}
2011-06-21 07:38:31 +02:00
@Override
2011-03-22 15:45:41 +01:00
public void perform ( ) {
2011-05-08 17:16:43 +02:00
if ( isLocked ( ) ) {
sendLockMessage ( ) ;
return ;
}
2011-03-22 15:45:41 +01:00
String playerName = parameters . get ( 0 ) ;
FPlayer you = findFPlayer ( playerName , false ) ;
if ( you = = null ) {
return ;
}
if ( me = = you ) {
sendMessage ( " You cannot kick yourself. " ) ;
2011-04-08 16:03:04 +02:00
sendMessage ( " You might want to: " + new FCommandLeave ( ) . getUseageTemplate ( false ) ) ;
2011-03-22 15:45:41 +01:00
return ;
}
2011-07-09 05:06:55 +02:00
Faction yourFaction = you . getFaction ( ) ;
Faction myFaction = me . getFaction ( ) ;
// players with admin-level "disband" permission can bypass these requirements
if ( ! Factions . hasPermDisband ( sender ) ) {
if ( yourFaction ! = myFaction ) {
sendMessage ( you . getNameAndRelevant ( me ) + Conf . colorSystem + " is not a member of " + myFaction . getTag ( me ) ) ;
return ;
}
if ( you . getRole ( ) . value > = me . getRole ( ) . value ) { // TODO add more informative messages.
sendMessage ( " Your rank is too low to kick this player. " ) ;
return ;
}
if ( ! Conf . CanLeaveWithNegativePower & & you . getPower ( ) < 0 ) {
sendMessage ( " You cannot kick that member until their power is positive. " ) ;
return ;
}
2011-03-22 15:45:41 +01:00
}
2011-07-09 05:06:55 +02:00
yourFaction . sendMessage ( me . getNameAndRelevant ( yourFaction ) + Conf . colorSystem + " kicked " + you . getNameAndRelevant ( yourFaction ) + Conf . colorSystem + " from the faction! :O " ) ;
you . sendMessage ( me . getNameAndRelevant ( you ) + Conf . colorSystem + " kicked you from " + yourFaction . getTag ( you ) + Conf . colorSystem + " ! :O " ) ;
if ( yourFaction ! = myFaction ) {
me . sendMessage ( Conf . colorSystem + " You kicked " + you . getNameAndRelevant ( myFaction ) + Conf . colorSystem + " from the faction " + yourFaction . getTag ( me ) + Conf . colorSystem + " ! " ) ;
2011-05-29 23:41:50 +02:00
}
2011-07-09 05:06:55 +02:00
yourFaction . deinvite ( you ) ;
2011-03-22 15:45:41 +01:00
you . resetFactionData ( ) ;
2011-07-09 05:06:55 +02:00
if ( yourFaction . getFPlayers ( ) . isEmpty ( ) ) {
// Remove this faction
for ( FPlayer fplayer : FPlayer . getAllOnline ( ) ) {
fplayer . sendMessage ( " The faction " + yourFaction . getTag ( fplayer ) + Conf . colorSystem + " was disbanded. " ) ;
}
Faction . delete ( yourFaction . getId ( ) ) ;
}
2011-03-22 15:45:41 +01:00
}
}