2011-10-09 21:57:43 +02:00
package com.massivecraft.factions.cmd ;
2011-03-22 15:45:41 +01:00
2011-07-18 22:06:02 +02:00
import com.massivecraft.factions.FPlayer ;
2011-10-09 14:53:38 +02:00
import com.massivecraft.factions.FPlayers ;
2011-12-23 01:13:55 +01:00
import com.massivecraft.factions.Faction ;
2011-10-09 14:53:38 +02:00
import com.massivecraft.factions.struct.Permission ;
2011-10-23 17:30:41 +02:00
import com.massivecraft.factions.struct.Rel ;
2011-12-23 01:13:55 +01:00
import com.massivecraft.factions.util.RelationUtil ;
2011-03-22 15:45:41 +01:00
2011-10-23 17:55:53 +02:00
public class CmdLeader extends FCommand
2011-10-09 14:53:38 +02:00
{
2011-10-23 17:55:53 +02:00
public CmdLeader ( )
2011-10-09 14:53:38 +02:00
{
super ( ) ;
2011-10-23 17:55:53 +02:00
this . aliases . add ( " leader " ) ;
2011-10-09 14:53:38 +02:00
2011-10-24 11:11:53 +02:00
this . requiredArgs . add ( " player " ) ;
2011-12-23 01:13:55 +01:00
this . optionalArgs . put ( " faction " , " your " ) ;
2011-03-22 18:48:09 +01:00
2011-10-23 17:55:53 +02:00
this . permission = Permission . LEADER . node ;
2011-10-09 21:57:43 +02:00
this . disableOnLock = true ;
2011-03-22 15:45:41 +01:00
2011-12-23 01:13:55 +01:00
senderMustBePlayer = false ;
2011-10-09 14:53:38 +02:00
senderMustBeMember = false ;
2011-10-23 17:55:53 +02:00
senderMustBeOfficer = false ;
2011-12-23 01:13:55 +01:00
senderMustBeLeader = false ;
2011-03-22 15:45:41 +01:00
}
2011-06-21 07:38:31 +02:00
@Override
2011-10-09 14:53:38 +02:00
public void perform ( )
{
2011-12-23 01:13:55 +01:00
FPlayer newLeader = this . argAsBestFPlayerMatch ( 0 ) ;
if ( newLeader = = null ) return ;
2011-03-22 15:45:41 +01:00
2011-12-23 01:13:55 +01:00
Faction targetFaction = this . argAsFaction ( 1 , myFaction ) ;
if ( targetFaction = = null ) return ;
FPlayer targetFactionCurrentLeader = targetFaction . getFPlayerLeader ( ) ;
// We now have fplayer and the target faction
if ( this . senderIsConsole | | fme . hasAdminMode ( ) )
2011-10-09 14:53:38 +02:00
{
2011-12-23 01:13:55 +01:00
// Do whatever you wish
2011-03-22 15:45:41 +01:00
}
2011-12-23 01:13:55 +01:00
else
2011-10-09 14:53:38 +02:00
{
2011-12-23 01:13:55 +01:00
// Follow the standard rules
if ( fme . getRole ( ) ! = Rel . LEADER )
{
sender . sendMessage ( p . txt . parse ( " <b>Only faction admins can %s. " , this . getHelpShort ( ) ) ) ;
return ;
}
if ( newLeader . getFaction ( ) ! = myFaction )
{
msg ( " %s<i> is not a member in your faction. " , newLeader . describeTo ( fme , true ) ) ;
return ;
}
if ( newLeader = = fme )
{
msg ( " <b>The target player musn't be yourself. " ) ;
return ;
}
2011-03-22 15:45:41 +01:00
}
2011-12-23 01:13:55 +01:00
// Perform the switching
if ( targetFactionCurrentLeader ! = null )
{
targetFactionCurrentLeader . setRole ( Rel . OFFICER ) ;
}
newLeader . setFaction ( targetFaction ) ;
newLeader . setRole ( Rel . LEADER ) ;
2011-03-22 15:45:41 +01:00
// Inform all players
2011-10-09 14:53:38 +02:00
for ( FPlayer fplayer : FPlayers . i . getOnline ( ) )
{
2011-12-23 01:13:55 +01:00
fplayer . msg ( " %s<i> gave %s<i> the leadership of %s " , RelationUtil . describeThatToMe ( fme , fplayer , true ) , newLeader . describeTo ( fplayer ) , targetFaction . describeTo ( fplayer ) ) ;
2011-03-22 15:45:41 +01:00
}
}
}