2011-10-09 21:57:43 +02:00
package com.massivecraft.factions.cmd ;
2011-10-09 20:10:19 +02:00
2013-04-24 11:16:37 +02:00
import java.util.Set ;
2013-04-24 13:26:59 +02:00
import com.massivecraft.factions.FPerm ;
2013-04-09 13:00:09 +02:00
import com.massivecraft.factions.Factions ;
2013-04-09 12:56:29 +02:00
import com.massivecraft.factions.Perm ;
2013-04-16 12:04:12 +02:00
import com.massivecraft.factions.Rel ;
2013-04-25 13:25:15 +02:00
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled ;
2013-04-25 13:53:22 +02:00
import com.massivecraft.factions.cmd.req.ReqHasFaction ;
2013-04-16 12:04:12 +02:00
import com.massivecraft.factions.cmd.req.ReqRoleIsAtLeast ;
2013-04-24 11:16:37 +02:00
import com.massivecraft.factions.entity.BoardColl ;
2013-04-22 12:26:13 +02:00
import com.massivecraft.factions.entity.BoardColls ;
2013-04-24 11:16:37 +02:00
import com.massivecraft.factions.entity.Faction ;
import com.massivecraft.factions.entity.FactionColls ;
2013-04-22 10:05:03 +02:00
import com.massivecraft.factions.entity.MConf ;
2013-04-24 11:16:37 +02:00
import com.massivecraft.factions.event.FactionsEventChunkChange ;
2013-04-16 10:11:59 +02:00
import com.massivecraft.mcore.cmd.req.ReqHasPerm ;
2013-04-24 11:16:37 +02:00
import com.massivecraft.mcore.ps.PS ;
2011-10-09 20:10:19 +02:00
2013-04-10 13:12:22 +02:00
public class CmdFactionsUnclaimall extends FCommand
2011-10-09 20:10:19 +02:00
{
2013-04-10 13:12:22 +02:00
public CmdFactionsUnclaimall ( )
2011-10-09 20:10:19 +02:00
{
2013-04-25 13:53:22 +02:00
this . addAliases ( " unclaimall " ) ;
2011-10-09 20:10:19 +02:00
2013-04-25 13:25:15 +02:00
this . addRequirements ( ReqFactionsEnabled . get ( ) ) ;
2013-04-16 10:11:59 +02:00
this . addRequirements ( ReqHasPerm . get ( Perm . UNCLAIM_ALL . node ) ) ;
2013-04-25 13:53:22 +02:00
this . addRequirements ( ReqHasFaction . get ( ) ) ;
2013-04-16 12:04:12 +02:00
this . addRequirements ( ReqRoleIsAtLeast . get ( Rel . OFFICER ) ) ;
2011-10-09 20:10:19 +02:00
}
@Override
public void perform ( )
{
2013-04-24 11:16:37 +02:00
// Args
2013-04-25 07:29:19 +02:00
Faction faction = usenderFaction ;
2013-04-24 11:16:37 +02:00
Faction newFaction = FactionColls . get ( ) . get ( faction ) . getNone ( ) ;
2013-04-24 13:26:59 +02:00
// FPerm
2013-04-29 12:48:11 +02:00
if ( ! FPerm . TERRITORY . has ( usender , faction , true ) ) return ;
2013-04-24 11:16:37 +02:00
// Apply
BoardColl boardColl = BoardColls . get ( ) . get ( faction ) ;
Set < PS > chunks = boardColl . getChunks ( faction ) ;
int countTotal = chunks . size ( ) ;
int countSuccess = 0 ;
int countFail = 0 ;
for ( PS chunk : chunks )
2011-10-12 18:48:47 +02:00
{
2013-04-24 11:16:37 +02:00
FactionsEventChunkChange event = new FactionsEventChunkChange ( sender , chunk , newFaction ) ;
event . run ( ) ;
if ( event . isCancelled ( ) )
2011-10-23 17:04:36 +02:00
{
2013-04-24 11:16:37 +02:00
countFail + + ;
2011-10-23 17:04:36 +02:00
}
else
{
2013-04-24 11:16:37 +02:00
countSuccess + + ;
boardColl . setFactionAt ( chunk , newFaction ) ;
2011-10-23 17:04:36 +02:00
}
2011-10-12 18:48:47 +02:00
}
2013-04-19 12:44:28 +02:00
// Inform
2013-04-25 12:04:01 +02:00
usenderFaction . msg ( " %s<i> unclaimed <h>%d <i>of your <h>%d <i>faction land. You now have <h>%d <i>land claimed. " , usender . describeTo ( usenderFaction , true ) , countSuccess , countTotal , countFail ) ;
Additional logging, with new conf.json settings to enable/disable logging of specific events:
"logFactionCreate": true, - log faction creation
"logFactionDisband": true, - log factions being disbanded, by command or by circumstance
"logFactionJoin": true, - log player joining a faction
"logFactionKick": true, - log player being kicked from a faction
"logFactionLeave": true, - log player leaving a faction
"logLandClaims": true, - log land being claimed (including safe zone and war zone)
"logLandUnclaims": true, - log land being unclaimed (including safe zone and war zone)
"logMoneyTransactions": true, - log money being deposited, withdrawn, and otherwise transferred in relation to faction banks
Also a fix for a potential NPE from players logging out and Spout appearance handler referencing them afterwards
2011-10-23 19:50:02 +02:00
2013-04-24 11:16:37 +02:00
// Log
2013-04-22 10:05:03 +02:00
if ( MConf . get ( ) . logLandUnclaims )
2013-04-11 11:11:31 +02:00
{
2013-04-25 07:29:19 +02:00
Factions . get ( ) . log ( usender . getName ( ) + " unclaimed everything for the faction: " + usenderFaction . getName ( ) ) ;
2013-04-11 11:11:31 +02:00
}
2011-10-09 20:10:19 +02:00
}
}