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.Conf ;
import com.massivecraft.factions.FPlayer ;
2011-10-09 14:53:38 +02:00
import com.massivecraft.factions.FPlayers ;
2019-12-24 15:19:43 +01:00
import com.massivecraft.factions.FactionsPlugin ;
2019-12-25 04:19:49 +01:00
import com.massivecraft.factions.cmd.audit.FLogType ;
2011-10-09 14:53:38 +02:00
import com.massivecraft.factions.struct.Permission ;
2014-12-08 00:12:52 +01:00
import com.massivecraft.factions.zcore.util.TL ;
2011-10-09 14:53:38 +02:00
import com.massivecraft.factions.zcore.util.TextUtil ;
2019-12-25 04:19:49 +01:00
import org.bukkit.Bukkit ;
2011-03-22 15:45:41 +01:00
2014-04-04 20:55:21 +02:00
public class CmdDescription extends FCommand {
2014-08-05 17:17:27 +02:00
2019-12-02 19:55:38 +01:00
/ * *
* @author FactionsUUID Team
* /
2019-09-15 11:19:06 +02:00
public CmdDescription ( ) {
super ( ) ;
2020-01-02 02:59:31 +01:00
this . aliases . addAll ( Aliases . description ) ;
2019-09-15 11:19:06 +02:00
this . requiredArgs . add ( " desc " ) ;
this . requirements = new CommandRequirements . Builder ( Permission . DESCRIPTION )
. playerOnly ( )
. memberOnly ( )
. noErrorOnManyArgs ( )
. build ( ) ;
}
@Override
public void perform ( CommandContext context ) {
2019-12-24 15:19:43 +01:00
FactionsPlugin . getInstance ( ) . getServer ( ) . getScheduler ( ) . runTaskAsynchronously ( FactionsPlugin . instance , ( ) - > {
// if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay
if ( ! context . payForCommand ( Conf . econCostDesc , TL . COMMAND_DESCRIPTION_TOCHANGE , TL . COMMAND_DESCRIPTION_FORCHANGE ) ) {
return ;
}
// since "&" color tags seem to work even through plain old FPlayer.sendMessage() for some reason, we need to break those up
// And replace all the % because it messes with string formatting and this is easy way around that.
2019-12-25 04:19:49 +01:00
String desc = TextUtil . implode ( context . args , " " ) . replaceAll ( " % " , " " ) . replaceAll ( " (&([a-f0-9klmnor])) " , " & $2 " ) ;
context . faction . setDescription ( desc ) ;
Bukkit . getScheduler ( ) . scheduleSyncDelayedTask ( FactionsPlugin . instance , ( ) - > FactionsPlugin . instance . logFactionEvent ( context . faction , FLogType . FDESC_EDIT , context . fPlayer . getName ( ) , desc ) ) ;
2019-12-24 15:19:43 +01:00
if ( ! Conf . broadcastDescriptionChanges ) {
context . msg ( TL . COMMAND_DESCRIPTION_CHANGED , context . faction . describeTo ( context . fPlayer ) ) ;
context . sendMessage ( context . faction . getDescription ( ) ) ;
return ;
}
// Broadcast the description to everyone
for ( FPlayer fplayer : FPlayers . getInstance ( ) . getOnlinePlayers ( ) ) {
fplayer . msg ( TL . COMMAND_DESCRIPTION_CHANGES , context . faction . describeTo ( fplayer ) ) ;
fplayer . sendMessage ( context . faction . getDescription ( ) ) ; // players can inject "&" or "`" or "<i>" or whatever in their description; &k is particularly interesting looking
}
} ) ;
2019-09-15 11:19:06 +02:00
}
@Override
public TL getUsageTranslation ( ) {
return TL . COMMAND_DESCRIPTION_DESCRIPTION ;
}
2015-01-22 00:58:33 +01:00
2019-09-14 21:13:01 +02:00
}