No More ZCore
This commit is contained in:
		@@ -155,7 +155,7 @@ public enum FPerm
 | 
			
		||||
		// TODO: Create better description messages like: "You must at least be officer".
 | 
			
		||||
		boolean ret = hostFaction.getPermittedRelations(this).contains(rel);
 | 
			
		||||
		
 | 
			
		||||
		if (rpSubject instanceof FPlayer && ret == false && ((FPlayer)rpSubject).hasAdminMode()) ret = true;
 | 
			
		||||
		if (rpSubject instanceof FPlayer && ret == false && ((FPlayer)rpSubject).isUsingAdminMode()) ret = true;
 | 
			
		||||
		
 | 
			
		||||
		if (!ret && informIfNot && rpSubject instanceof FPlayer)
 | 
			
		||||
		{
 | 
			
		||||
@@ -163,7 +163,7 @@ public enum FPerm
 | 
			
		||||
			fplayer.msg(errorpattern, hostFaction.describeTo(fplayer, true), this.getDescription());
 | 
			
		||||
			if (Perm.ADMIN.has(fplayer.getPlayer()))
 | 
			
		||||
			{
 | 
			
		||||
				fplayer.msg("<i>You can bypass by using " + Factions.get().cmdBase.cmdFactionsAdmin.getUseageTemplate(false));
 | 
			
		||||
				fplayer.msg("<i>You can bypass by using " + Factions.get().getOuterCmdFactions().cmdFactionsAdmin.getUseageTemplate(false));
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return ret;
 | 
			
		||||
 
 | 
			
		||||
@@ -123,9 +123,9 @@ public class FPlayer extends SenderEntity<FPlayer> implements EconomyParticipato
 | 
			
		||||
	public Faction getAutoClaimFor() { return autoClaimFor; }
 | 
			
		||||
	public void setAutoClaimFor(Faction faction) { this.autoClaimFor = faction; }
 | 
			
		||||
		
 | 
			
		||||
	private transient boolean hasAdminMode = false;
 | 
			
		||||
	public boolean hasAdminMode() { return this.hasAdminMode; }
 | 
			
		||||
	public void setHasAdminMode(boolean val) { this.hasAdminMode = val; }
 | 
			
		||||
	private transient boolean usingAdminMode = false;
 | 
			
		||||
	public boolean isUsingAdminMode() { return this.usingAdminMode; }
 | 
			
		||||
	public void setUsingAdminMode(boolean val) { this.usingAdminMode = val; }
 | 
			
		||||
	
 | 
			
		||||
	// FIELD: loginPvpDisabled
 | 
			
		||||
	private transient boolean loginPvpDisabled;
 | 
			
		||||
@@ -490,7 +490,7 @@ public class FPlayer extends SenderEntity<FPlayer> implements EconomyParticipato
 | 
			
		||||
	public void leave(boolean makePay)
 | 
			
		||||
	{
 | 
			
		||||
		Faction myFaction = this.getFaction();
 | 
			
		||||
		makePay = makePay && Econ.shouldBeUsed() && ! this.hasAdminMode();
 | 
			
		||||
		makePay = makePay && Econ.shouldBeUsed() && ! this.isUsingAdminMode();
 | 
			
		||||
 | 
			
		||||
		if (myFaction == null)
 | 
			
		||||
		{
 | 
			
		||||
@@ -575,7 +575,7 @@ public class FPlayer extends SenderEntity<FPlayer> implements EconomyParticipato
 | 
			
		||||
		{
 | 
			
		||||
			error = Txt.parse("<b>Sorry, this world has land claiming disabled.");
 | 
			
		||||
		}
 | 
			
		||||
		else if (this.hasAdminMode())
 | 
			
		||||
		else if (this.isUsingAdminMode())
 | 
			
		||||
		{
 | 
			
		||||
			return true;
 | 
			
		||||
		}
 | 
			
		||||
@@ -610,7 +610,7 @@ public class FPlayer extends SenderEntity<FPlayer> implements EconomyParticipato
 | 
			
		||||
		else if
 | 
			
		||||
		(
 | 
			
		||||
			ConfServer.claimsMustBeConnected
 | 
			
		||||
			&& ! this.hasAdminMode()
 | 
			
		||||
			&& ! this.isUsingAdminMode()
 | 
			
		||||
			&& myFaction.getLandRoundedInWorld(ps.getWorld()) > 0
 | 
			
		||||
			&& !BoardColl.get().isConnectedPs(ps, myFaction)
 | 
			
		||||
			&& (!ConfServer.claimsCanBeUnconnectedIfOwnedByOtherFaction || !currentFaction.isNormal())
 | 
			
		||||
@@ -655,7 +655,7 @@ public class FPlayer extends SenderEntity<FPlayer> implements EconomyParticipato
 | 
			
		||||
		
 | 
			
		||||
		// TODO: Add flag no costs??
 | 
			
		||||
		// if economy is enabled and they're not on the bypass list, make sure they can pay
 | 
			
		||||
		boolean mustPay = Econ.shouldBeUsed() && ! this.hasAdminMode();
 | 
			
		||||
		boolean mustPay = Econ.shouldBeUsed() && ! this.isUsingAdminMode();
 | 
			
		||||
		double cost = 0.0;
 | 
			
		||||
		EconomyParticipator payee = null;
 | 
			
		||||
		if (mustPay)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,5 @@
 | 
			
		||||
package com.massivecraft.factions;
 | 
			
		||||
 | 
			
		||||
import java.lang.reflect.Modifier;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
 | 
			
		||||
import com.massivecraft.factions.adapters.BoardAdapter;
 | 
			
		||||
import com.massivecraft.factions.adapters.BoardMapAdapter;
 | 
			
		||||
import com.massivecraft.factions.adapters.FFlagAdapter;
 | 
			
		||||
@@ -26,11 +22,8 @@ import com.massivecraft.factions.listeners.FactionsPlayerListener;
 | 
			
		||||
import com.massivecraft.factions.util.AutoLeaveTask;
 | 
			
		||||
import com.massivecraft.factions.util.EconLandRewardTask;
 | 
			
		||||
import com.massivecraft.factions.util.LazyLocation;
 | 
			
		||||
import com.massivecraft.factions.zcore.MPlugin;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.command.Command;
 | 
			
		||||
import org.bukkit.command.CommandSender;
 | 
			
		||||
 | 
			
		||||
import com.massivecraft.mcore.MPlugin;
 | 
			
		||||
import com.massivecraft.mcore.xlib.gson.GsonBuilder;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -48,6 +41,10 @@ public class Factions extends MPlugin
 | 
			
		||||
	// FIELDS
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	
 | 
			
		||||
	// Commands
 | 
			
		||||
	private CmdFactions outerCmdFactions;
 | 
			
		||||
	public CmdFactions getOuterCmdFactions() { return this.outerCmdFactions; }
 | 
			
		||||
	
 | 
			
		||||
	// Listeners
 | 
			
		||||
	public FactionsPlayerListener playerListener;
 | 
			
		||||
	public FactionsChatListener chatListener;
 | 
			
		||||
@@ -59,10 +56,6 @@ public class Factions extends MPlugin
 | 
			
		||||
	private Integer AutoLeaveTask = null;
 | 
			
		||||
	private Integer econLandRewardTaskID = null;
 | 
			
		||||
 | 
			
		||||
	// Commands
 | 
			
		||||
	public CmdFactions cmdBase;
 | 
			
		||||
	public CmdFactionsAutoHelp cmdAutoHelp;
 | 
			
		||||
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	// OVERRIDE
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
@@ -75,14 +68,14 @@ public class Factions extends MPlugin
 | 
			
		||||
		// Load Server Config
 | 
			
		||||
		ConfServer.get().load();
 | 
			
		||||
 | 
			
		||||
		// Load Conf from disk
 | 
			
		||||
		// Initialize Collections
 | 
			
		||||
		FPlayerColl.get().init();
 | 
			
		||||
		FactionColl.get().init();
 | 
			
		||||
		BoardColl.get().init();
 | 
			
		||||
		
 | 
			
		||||
		// Add Base Commands
 | 
			
		||||
		this.cmdAutoHelp = new CmdFactionsAutoHelp();
 | 
			
		||||
		this.cmdBase = new CmdFactions();
 | 
			
		||||
		// Commands
 | 
			
		||||
		this.outerCmdFactions = new CmdFactions();
 | 
			
		||||
		this.outerCmdFactions.register(this);
 | 
			
		||||
 | 
			
		||||
		EssentialsFeatures.setup();
 | 
			
		||||
		SpoutFeatures.setup();
 | 
			
		||||
@@ -125,17 +118,15 @@ public class Factions extends MPlugin
 | 
			
		||||
	@Override
 | 
			
		||||
	public GsonBuilder getGsonBuilder()
 | 
			
		||||
	{
 | 
			
		||||
		return new GsonBuilder()
 | 
			
		||||
		.setPrettyPrinting()
 | 
			
		||||
		.disableHtmlEscaping()
 | 
			
		||||
		.excludeFieldsWithModifiers(Modifier.TRANSIENT, Modifier.VOLATILE)
 | 
			
		||||
		return super.getGsonBuilder()
 | 
			
		||||
		.registerTypeAdapter(LazyLocation.class, new LazyLocationAdapter())
 | 
			
		||||
		.registerTypeAdapter(TerritoryAccess.class, TerritoryAccessAdapter.get())
 | 
			
		||||
		.registerTypeAdapter(Board.class, BoardAdapter.get())
 | 
			
		||||
		.registerTypeAdapter(Board.MAP_TYPE, BoardMapAdapter.get())
 | 
			
		||||
		.registerTypeAdapter(Rel.class, new RelAdapter())
 | 
			
		||||
		.registerTypeAdapter(FPerm.class, new FPermAdapter())
 | 
			
		||||
		.registerTypeAdapter(FFlag.class, new FFlagAdapter());
 | 
			
		||||
		.registerTypeAdapter(FFlag.class, new FFlagAdapter())
 | 
			
		||||
		;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
@@ -187,13 +178,6 @@ public class Factions extends MPlugin
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean onCommand(CommandSender sender, Command command, String label, String[] split)
 | 
			
		||||
	{
 | 
			
		||||
		this.cmdBase.execute(sender, new ArrayList<String>(Arrays.asList(split)));
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	// Functions for other plugins to hook into
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ package com.massivecraft.factions.cmd;
 | 
			
		||||
 | 
			
		||||
import com.massivecraft.factions.Factions;
 | 
			
		||||
import com.massivecraft.factions.Perm;
 | 
			
		||||
import com.massivecraft.mcore.cmd.arg.ARBoolean;
 | 
			
		||||
import com.massivecraft.mcore.cmd.req.ReqHasPerm;
 | 
			
		||||
 | 
			
		||||
public class CmdFactionsAdmin extends FCommand
 | 
			
		||||
@@ -18,9 +19,12 @@ public class CmdFactionsAdmin extends FCommand
 | 
			
		||||
	@Override
 | 
			
		||||
	public void perform()
 | 
			
		||||
	{
 | 
			
		||||
		fme.setHasAdminMode(this.argAsBool(0, ! fme.hasAdminMode()));
 | 
			
		||||
		Boolean target = this.arg(0, ARBoolean.get(), !fme.isUsingAdminMode());
 | 
			
		||||
		if (target == null) return;
 | 
			
		||||
		
 | 
			
		||||
		if ( fme.hasAdminMode())
 | 
			
		||||
		fme.setUsingAdminMode(target);		
 | 
			
		||||
		
 | 
			
		||||
		if ( fme.isUsingAdminMode())
 | 
			
		||||
		{
 | 
			
		||||
			fme.msg("<i>You have enabled admin bypass mode.");
 | 
			
		||||
			Factions.get().log(fme.getName() + " has ENABLED admin bypass mode.");
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@ package com.massivecraft.factions.cmd;
 | 
			
		||||
import com.massivecraft.factions.FPerm;
 | 
			
		||||
import com.massivecraft.factions.Faction;
 | 
			
		||||
import com.massivecraft.factions.Perm;
 | 
			
		||||
import com.massivecraft.factions.cmd.arg.ARFaction;
 | 
			
		||||
import com.massivecraft.mcore.cmd.req.ReqHasPerm;
 | 
			
		||||
import com.massivecraft.mcore.cmd.req.ReqIsPlayer;
 | 
			
		||||
 | 
			
		||||
@@ -21,7 +22,7 @@ public class CmdFactionsAutoClaim extends FCommand
 | 
			
		||||
	@Override
 | 
			
		||||
	public void perform()
 | 
			
		||||
	{
 | 
			
		||||
		Faction forFaction = this.argAsFaction(0, myFaction);
 | 
			
		||||
		Faction forFaction = this.arg(0, ARFaction.get(), myFaction);
 | 
			
		||||
		if (forFaction == null || forFaction == fme.getAutoClaimFor())
 | 
			
		||||
		{
 | 
			
		||||
			fme.setAutoClaimFor(null);
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@ public class CmdFactionsClaim extends FCommand
 | 
			
		||||
	@Override
 | 
			
		||||
	public void perform()
 | 
			
		||||
	{
 | 
			
		||||
		Faction forFaction = this.arg(0, ARFaction.get());
 | 
			
		||||
		final Faction forFaction = this.arg(0, ARFaction.get());
 | 
			
		||||
		if (forFaction == null) return;
 | 
			
		||||
		
 | 
			
		||||
		Integer radius = this.arg(1, ARInteger.get(), 1);
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,6 @@ import com.massivecraft.factions.Rel;
 | 
			
		||||
import com.massivecraft.factions.event.FPlayerJoinEvent;
 | 
			
		||||
import com.massivecraft.factions.event.FactionCreateEvent;
 | 
			
		||||
import com.massivecraft.mcore.cmd.req.ReqHasPerm;
 | 
			
		||||
import com.massivecraft.mcore.cmd.req.ReqIsPlayer;
 | 
			
		||||
 | 
			
		||||
public class CmdFactionsCreate extends FCommand
 | 
			
		||||
{
 | 
			
		||||
@@ -91,7 +90,7 @@ public class CmdFactionsCreate extends FCommand
 | 
			
		||||
			follower.msg("%s<i> created a new faction %s", fme.describeTo(follower, true), faction.getTag(follower));
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		msg("<i>You should now: %s", p.cmdBase.cmdFactionsDescription.getUseageTemplate());
 | 
			
		||||
		msg("<i>You should now: %s", Factions.get().getOuterCmdFactions().cmdFactionsDescription.getUseageTemplate());
 | 
			
		||||
 | 
			
		||||
		if (ConfServer.logFactionCreate)
 | 
			
		||||
			Factions.get().log(fme.getName()+" created a new faction: "+tag);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
package com.massivecraft.factions.cmd;
 | 
			
		||||
 | 
			
		||||
import com.massivecraft.factions.FPlayer;
 | 
			
		||||
import com.massivecraft.factions.Factions;
 | 
			
		||||
import com.massivecraft.factions.Perm;
 | 
			
		||||
import com.massivecraft.factions.cmd.arg.ARFPlayer;
 | 
			
		||||
import com.massivecraft.mcore.cmd.req.ReqHasPerm;
 | 
			
		||||
@@ -31,7 +32,7 @@ public class CmdFactionsDeinvite extends FCommand
 | 
			
		||||
		if (you.getFaction() == myFaction)
 | 
			
		||||
		{
 | 
			
		||||
			msg("%s<i> is already a member of %s", you.getName(), myFaction.getTag());
 | 
			
		||||
			msg("<i>You might want to: %s", p.cmdBase.cmdFactionsKick.getUseageTemplate(false));
 | 
			
		||||
			msg("<i>You might want to: %s", Factions.get().getOuterCmdFactions().cmdFactionsKick.getUseageTemplate(false));
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,9 @@ package com.massivecraft.factions.cmd;
 | 
			
		||||
import com.massivecraft.factions.FFlag;
 | 
			
		||||
import com.massivecraft.factions.Faction;
 | 
			
		||||
import com.massivecraft.factions.Perm;
 | 
			
		||||
import com.massivecraft.factions.cmd.arg.ARFFlag;
 | 
			
		||||
import com.massivecraft.factions.cmd.arg.ARFaction;
 | 
			
		||||
import com.massivecraft.mcore.cmd.arg.ARBoolean;
 | 
			
		||||
import com.massivecraft.mcore.cmd.req.ReqHasPerm;
 | 
			
		||||
import com.massivecraft.mcore.util.Txt;
 | 
			
		||||
 | 
			
		||||
@@ -37,8 +39,9 @@ public class CmdFactionsFlag extends FCommand
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		FFlag flag = this.argAsFactionFlag(1);
 | 
			
		||||
		FFlag flag = this.arg(1, ARFFlag.get());
 | 
			
		||||
		if (flag == null) return;
 | 
			
		||||
		
 | 
			
		||||
		if ( ! this.argIsSet(2))
 | 
			
		||||
		{
 | 
			
		||||
			msg(Txt.titleize("Flag for " + faction.describeTo(fme, true)));
 | 
			
		||||
@@ -46,7 +49,7 @@ public class CmdFactionsFlag extends FCommand
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		Boolean targetValue = this.argAsBool(2);
 | 
			
		||||
		Boolean targetValue = this.arg(2, ARBoolean.get());
 | 
			
		||||
		if (targetValue == null) return;
 | 
			
		||||
 | 
			
		||||
		// Do the sender have the right to change flags?
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@ import com.massivecraft.factions.FFlag;
 | 
			
		||||
import com.massivecraft.factions.FPlayer;
 | 
			
		||||
import com.massivecraft.factions.FPlayerColl;
 | 
			
		||||
import com.massivecraft.factions.Faction;
 | 
			
		||||
import com.massivecraft.factions.Factions;
 | 
			
		||||
import com.massivecraft.factions.Perm;
 | 
			
		||||
import com.massivecraft.factions.Rel;
 | 
			
		||||
import com.massivecraft.factions.integration.EssentialsFeatures;
 | 
			
		||||
@@ -53,7 +54,7 @@ public class CmdFactionsHome extends FCommand
 | 
			
		||||
		if ( ! myFaction.hasHome())
 | 
			
		||||
		{
 | 
			
		||||
			fme.msg("<b>Your faction does not have a home. " + (fme.getRole().isLessThan(Rel.OFFICER) ? "<i> Ask your leader to:" : "<i>You should:"));
 | 
			
		||||
			fme.sendMessage(p.cmdBase.cmdFactionsSethome.getUseageTemplate());
 | 
			
		||||
			fme.sendMessage(Factions.get().getOuterCmdFactions().cmdFactionsSethome.getUseageTemplate());
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ import com.massivecraft.factions.ConfServer;
 | 
			
		||||
import com.massivecraft.factions.FPerm;
 | 
			
		||||
import com.massivecraft.factions.FPlayer;
 | 
			
		||||
import com.massivecraft.factions.Faction;
 | 
			
		||||
import com.massivecraft.factions.Factions;
 | 
			
		||||
import com.massivecraft.factions.Perm;
 | 
			
		||||
import com.massivecraft.factions.cmd.arg.ARFPlayer;
 | 
			
		||||
import com.massivecraft.factions.cmd.arg.ARFaction;
 | 
			
		||||
@@ -33,7 +34,7 @@ public class CmdFactionsInvite extends FCommand
 | 
			
		||||
		if (you.getFaction() == myFaction)
 | 
			
		||||
		{
 | 
			
		||||
			msg("%s<i> is already a member of %s", you.getName(), myFaction.getTag());
 | 
			
		||||
			msg("<i>You might want to: " +  p.cmdBase.cmdFactionsKick.getUseageTemplate(false));
 | 
			
		||||
			msg("<i>You might want to: " + Factions.get().getOuterCmdFactions().cmdFactionsKick.getUseageTemplate(false));
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -66,7 +66,7 @@ public class CmdFactionsJoin extends FCommand
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if( ! (faction.isOpen() || faction.isInvited(fplayer) || fme.hasAdminMode() || Perm.JOIN_ANY.has(sender, false)))
 | 
			
		||||
		if( ! (faction.isOpen() || faction.isInvited(fplayer) || fme.isUsingAdminMode() || Perm.JOIN_ANY.has(sender, false)))
 | 
			
		||||
		{
 | 
			
		||||
			msg("<i>This faction requires invitation.");
 | 
			
		||||
			if (samePlayer)
 | 
			
		||||
 
 | 
			
		||||
@@ -34,11 +34,11 @@ public class CmdFactionsKick extends FCommand
 | 
			
		||||
		if (fme == you)
 | 
			
		||||
		{
 | 
			
		||||
			msg("<b>You cannot kick yourself.");
 | 
			
		||||
			msg("<i>You might want to: %s", p.cmdBase.cmdFactionsLeave.getUseageTemplate(false));
 | 
			
		||||
			msg("<i>You might want to: %s", Factions.get().getOuterCmdFactions().cmdFactionsLeave.getUseageTemplate(false));
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (you.getRole() == Rel.LEADER && !(this.senderIsConsole || fme.hasAdminMode()))
 | 
			
		||||
		if (you.getRole() == Rel.LEADER && !(this.senderIsConsole || fme.isUsingAdminMode()))
 | 
			
		||||
		{
 | 
			
		||||
			msg("<b>The leader can not be kicked.");
 | 
			
		||||
			return;
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ public class CmdFactionsLeader extends FCommand
 | 
			
		||||
		FPlayer targetFactionCurrentLeader = targetFaction.getFPlayerLeader();
 | 
			
		||||
		
 | 
			
		||||
		// We now have fplayer and the target faction
 | 
			
		||||
		if (this.senderIsConsole || fme.hasAdminMode() || Perm.LEADER_ANY.has(sender, false))
 | 
			
		||||
		if (this.senderIsConsole || fme.isUsingAdminMode() || Perm.LEADER_ANY.has(sender, false))
 | 
			
		||||
		{
 | 
			
		||||
			// Do whatever you wish
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@ package com.massivecraft.factions.cmd;
 | 
			
		||||
import com.massivecraft.factions.BoardColl;
 | 
			
		||||
import com.massivecraft.factions.ConfServer;
 | 
			
		||||
import com.massivecraft.factions.Perm;
 | 
			
		||||
import com.massivecraft.mcore.cmd.arg.ARBoolean;
 | 
			
		||||
import com.massivecraft.mcore.cmd.req.ReqHasPerm;
 | 
			
		||||
import com.massivecraft.mcore.cmd.req.ReqIsPlayer;
 | 
			
		||||
import com.massivecraft.mcore.ps.PS;
 | 
			
		||||
@@ -23,9 +24,16 @@ public class CmdFactionsMap extends FCommand
 | 
			
		||||
	@Override
 | 
			
		||||
	public void perform()
 | 
			
		||||
	{
 | 
			
		||||
		if (this.argIsSet(0))
 | 
			
		||||
		if (!this.argIsSet(0))
 | 
			
		||||
		{
 | 
			
		||||
			if (this.argAsBool(0, ! fme.isMapAutoUpdating()))
 | 
			
		||||
			// if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay
 | 
			
		||||
			if ( ! payForCommand(ConfServer.econCostMap, "to show the map", "for showing the map")) return;
 | 
			
		||||
 | 
			
		||||
			showMap();
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (this.arg(0, ARBoolean.get(), !fme.isMapAutoUpdating()))
 | 
			
		||||
		{
 | 
			
		||||
			// Turn on
 | 
			
		||||
 | 
			
		||||
@@ -45,14 +53,6 @@ public class CmdFactionsMap extends FCommand
 | 
			
		||||
			msg("<i>Map auto update <red>DISABLED.");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			// if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay
 | 
			
		||||
			if ( ! payForCommand(ConfServer.econCostMap, "to show the map", "for showing the map")) return;
 | 
			
		||||
 | 
			
		||||
			showMap();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void showMap()
 | 
			
		||||
	{
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,10 @@ import com.massivecraft.factions.FPerm;
 | 
			
		||||
import com.massivecraft.factions.Faction;
 | 
			
		||||
import com.massivecraft.factions.Perm;
 | 
			
		||||
import com.massivecraft.factions.Rel;
 | 
			
		||||
import com.massivecraft.factions.cmd.arg.ARFPerm;
 | 
			
		||||
import com.massivecraft.factions.cmd.arg.ARFaction;
 | 
			
		||||
import com.massivecraft.factions.cmd.arg.ARRel;
 | 
			
		||||
import com.massivecraft.mcore.cmd.arg.ARBoolean;
 | 
			
		||||
import com.massivecraft.mcore.cmd.req.ReqHasPerm;
 | 
			
		||||
import com.massivecraft.mcore.util.Txt;
 | 
			
		||||
 | 
			
		||||
@@ -40,8 +43,9 @@ public class CmdFactionsPerm extends FCommand
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		FPerm perm = this.argAsFactionPerm(1);
 | 
			
		||||
		FPerm perm = this.arg(1, ARFPerm.get());
 | 
			
		||||
		if (perm == null) return;
 | 
			
		||||
		
 | 
			
		||||
		if ( ! this.argIsSet(2))
 | 
			
		||||
		{
 | 
			
		||||
			msg(Txt.titleize("Perm for " + faction.describeTo(fme, true)));
 | 
			
		||||
@@ -53,10 +57,10 @@ public class CmdFactionsPerm extends FCommand
 | 
			
		||||
		// Do the sender have the right to change perms for this faction?
 | 
			
		||||
		if ( ! FPerm.PERMS.has(sender, faction, true)) return;
 | 
			
		||||
		
 | 
			
		||||
		Rel rel = this.argAsRel(2);
 | 
			
		||||
		Rel rel = this.arg(2, ARRel.get());
 | 
			
		||||
		if (rel == null) return;
 | 
			
		||||
		
 | 
			
		||||
		Boolean val = this.argAsBool(3, null);
 | 
			
		||||
		Boolean val = this.arg(3, ARBoolean.get(), null);
 | 
			
		||||
		if (val == null) return;
 | 
			
		||||
		
 | 
			
		||||
		// Do the change
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,9 @@ import com.massivecraft.factions.Faction;
 | 
			
		||||
import com.massivecraft.factions.FPlayer;
 | 
			
		||||
import com.massivecraft.factions.Factions;
 | 
			
		||||
import com.massivecraft.factions.Perm;
 | 
			
		||||
import com.massivecraft.factions.cmd.arg.ARFPlayer;
 | 
			
		||||
import com.massivecraft.factions.cmd.arg.ARFaction;
 | 
			
		||||
import com.massivecraft.mcore.cmd.arg.ARDouble;
 | 
			
		||||
import com.massivecraft.mcore.cmd.req.ReqHasPerm;
 | 
			
		||||
 | 
			
		||||
public class CmdFactionsPowerBoost extends FCommand
 | 
			
		||||
@@ -35,32 +38,29 @@ public class CmdFactionsPowerBoost extends FCommand
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		Double targetPower = this.argAsDouble(2);
 | 
			
		||||
		if (targetPower == null)
 | 
			
		||||
		{
 | 
			
		||||
			msg("<b>You must specify a valid numeric value for the power bonus/penalty amount.");
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		Double targetPower = this.arg(2, ARDouble.get());
 | 
			
		||||
		if (targetPower == null) return;
 | 
			
		||||
 | 
			
		||||
		String target;
 | 
			
		||||
 | 
			
		||||
		if (doPlayer)
 | 
			
		||||
		{
 | 
			
		||||
			FPlayer targetPlayer = this.argAsBestFPlayerMatch(1);
 | 
			
		||||
			FPlayer targetPlayer = this.arg(1, ARFPlayer.getStartAny());
 | 
			
		||||
			if (targetPlayer == null) return;
 | 
			
		||||
			
 | 
			
		||||
			targetPlayer.setPowerBoost(targetPower);
 | 
			
		||||
			target = "Player \""+targetPlayer.getName()+"\"";
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			Faction targetFaction = this.argAsFaction(1);
 | 
			
		||||
			Faction targetFaction = this.arg(1, ARFaction.get());
 | 
			
		||||
			if (targetFaction == null) return;
 | 
			
		||||
			
 | 
			
		||||
			targetFaction.setPowerBoost(targetPower);
 | 
			
		||||
			target = "Faction \""+targetFaction.getTag()+"\"";
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		msg("<i>"+target+" now has a power bonus/penalty of "+targetPower+" to min and max power levels.");
 | 
			
		||||
		if (!senderIsConsole)
 | 
			
		||||
		Factions.get().log(fme.getName()+" has set the power bonus/penalty for "+target+" to "+targetPower+".");
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ import com.massivecraft.factions.BoardColl;
 | 
			
		||||
import com.massivecraft.factions.ConfServer;
 | 
			
		||||
import com.massivecraft.factions.FPerm;
 | 
			
		||||
import com.massivecraft.factions.Faction;
 | 
			
		||||
import com.massivecraft.factions.Factions;
 | 
			
		||||
import com.massivecraft.factions.Perm;
 | 
			
		||||
import com.massivecraft.factions.cmd.arg.ARFaction;
 | 
			
		||||
import com.massivecraft.mcore.cmd.req.ReqHasPerm;
 | 
			
		||||
@@ -40,7 +41,7 @@ public class CmdFactionsSethome extends FCommand
 | 
			
		||||
		// Can the player set the faction home HERE?
 | 
			
		||||
		if
 | 
			
		||||
		(
 | 
			
		||||
			! fme.hasAdminMode()
 | 
			
		||||
			! fme.isUsingAdminMode()
 | 
			
		||||
			&&
 | 
			
		||||
			ConfServer.homesMustBeInClaimedTerritory
 | 
			
		||||
			&& 
 | 
			
		||||
@@ -57,7 +58,7 @@ public class CmdFactionsSethome extends FCommand
 | 
			
		||||
		faction.setHome(me.getLocation());
 | 
			
		||||
		
 | 
			
		||||
		faction.msg("%s<i> set the home for your faction. You can now use:", fme.describeTo(myFaction, true));
 | 
			
		||||
		faction.sendMessage(p.cmdBase.cmdFactionsHome.getUseageTemplate());
 | 
			
		||||
		faction.sendMessage(Factions.get().getOuterCmdFactions().cmdFactionsHome.getUseageTemplate());
 | 
			
		||||
		if (faction != myFaction)
 | 
			
		||||
		{
 | 
			
		||||
			fme.msg("<b>You have set the home for the "+faction.getTag(fme)+"<i> faction.");
 | 
			
		||||
 
 | 
			
		||||
@@ -64,7 +64,7 @@ public abstract class FCommand extends MCommand
 | 
			
		||||
	// if economy is enabled and they're not on the bypass list, make 'em pay; returns true unless person can't afford the cost
 | 
			
		||||
	public boolean payForCommand(double cost, String toDoThis, String forDoingThis)
 | 
			
		||||
	{
 | 
			
		||||
		if ( ! Econ.shouldBeUsed() || this.fme == null || cost == 0.0 || fme.hasAdminMode()) return true;
 | 
			
		||||
		if ( ! Econ.shouldBeUsed() || this.fme == null || cost == 0.0 || fme.isUsingAdminMode()) return true;
 | 
			
		||||
 | 
			
		||||
		if(ConfServer.bankEnabled && ConfServer.bankFactionPaysCosts && fme.hasFaction())
 | 
			
		||||
			return Econ.modifyMoney(myFaction, -cost, toDoThis, forDoingThis);
 | 
			
		||||
@@ -75,7 +75,7 @@ public abstract class FCommand extends MCommand
 | 
			
		||||
	// like above, but just make sure they can pay; returns true unless person can't afford the cost
 | 
			
		||||
	public boolean canAffordCommand(double cost, String toDoThis)
 | 
			
		||||
	{
 | 
			
		||||
		if ( ! Econ.shouldBeUsed() || this.fme == null || cost == 0.0 || fme.hasAdminMode()) return true;
 | 
			
		||||
		if ( ! Econ.shouldBeUsed() || this.fme == null || cost == 0.0 || fme.isUsingAdminMode()) return true;
 | 
			
		||||
 | 
			
		||||
		if(ConfServer.bankEnabled && ConfServer.bankFactionPaysCosts && fme.hasFaction())
 | 
			
		||||
			return Econ.hasAtLeast(myFaction, cost, toDoThis);
 | 
			
		||||
 
 | 
			
		||||
@@ -90,7 +90,7 @@ public class Econ
 | 
			
		||||
		if (fI == null) return true;
 | 
			
		||||
		
 | 
			
		||||
		// Bypassing players can do any kind of transaction
 | 
			
		||||
		if (i instanceof FPlayer && ((FPlayer)i).hasAdminMode()) return true;
 | 
			
		||||
		if (i instanceof FPlayer && ((FPlayer)i).isUsingAdminMode()) return true;
 | 
			
		||||
		
 | 
			
		||||
		// You can deposit to anywhere you feel like. It's your loss if you can't withdraw it again.
 | 
			
		||||
		if (i == you) return true;
 | 
			
		||||
 
 | 
			
		||||
@@ -88,7 +88,7 @@ public class FactionsBlockListener implements Listener
 | 
			
		||||
		if (ConfServer.playersWhoBypassAllProtection.contains(name)) return true;
 | 
			
		||||
 | 
			
		||||
		FPlayer me = FPlayer.get(name);
 | 
			
		||||
		if (me.hasAdminMode()) return true;
 | 
			
		||||
		if (me.isUsingAdminMode()) return true;
 | 
			
		||||
 | 
			
		||||
		PS ps = PS.valueOf(location);
 | 
			
		||||
		Faction factionHere = BoardColl.get().getFactionAt(ps);
 | 
			
		||||
 
 | 
			
		||||
@@ -205,7 +205,7 @@ public class FactionsPlayerListener implements Listener
 | 
			
		||||
		if (ConfServer.playersWhoBypassAllProtection.contains(name)) return true;
 | 
			
		||||
 | 
			
		||||
		FPlayer me = FPlayerColl.get().get(name);
 | 
			
		||||
		if (me.hasAdminMode()) return true;
 | 
			
		||||
		if (me.isUsingAdminMode()) return true;
 | 
			
		||||
		if (Const.MATERIALS_EDIT_TOOLS.contains(material) && ! FPerm.BUILD.has(me, loc, ! justCheck)) return false;
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
@@ -215,7 +215,7 @@ public class FactionsPlayerListener implements Listener
 | 
			
		||||
		if (ConfServer.playersWhoBypassAllProtection.contains(name)) return true;
 | 
			
		||||
 | 
			
		||||
		FPlayer me = FPlayerColl.get().get(name);
 | 
			
		||||
		if (me.hasAdminMode()) return true;
 | 
			
		||||
		if (me.isUsingAdminMode()) return true;
 | 
			
		||||
		Location loc = block.getLocation();
 | 
			
		||||
		Material material = block.getType();
 | 
			
		||||
		
 | 
			
		||||
@@ -293,7 +293,7 @@ public class FactionsPlayerListener implements Listener
 | 
			
		||||
		FPlayer me = FPlayerColl.get().get(player);
 | 
			
		||||
		
 | 
			
		||||
		// With adminmode no commands are denied. 
 | 
			
		||||
		if (me.hasAdminMode()) return;
 | 
			
		||||
		if (me.isUsingAdminMode()) return;
 | 
			
		||||
		
 | 
			
		||||
		// The full command is converted to lowercase and does include the slash in the front
 | 
			
		||||
		String fullCmd = event.getMessage().toLowerCase();
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
package com.massivecraft.factions.zcore;
 | 
			
		||||
 | 
			
		||||
public enum CommandVisibility
 | 
			
		||||
{
 | 
			
		||||
	VISIBLE, // Visible commands are visible to anyone. Even those who don't have permission to use it or is of invalid sender type.
 | 
			
		||||
	SECRET, // Secret commands are visible only to those who can use the command. These commands are usually some kind of admin commands.
 | 
			
		||||
	INVISIBLE, // Invisible commands are invisible to everyone, even those who can use the command.
 | 
			
		||||
	;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
package com.massivecraft.factions.zcore;
 | 
			
		||||
 | 
			
		||||
public class Lang
 | 
			
		||||
{
 | 
			
		||||
	public static final String permForbidden = "<b>You don't have permission to %s.";
 | 
			
		||||
	public static final String permDoThat = "do that";
 | 
			
		||||
	
 | 
			
		||||
	public static final String commandSenderMustBePlayer = "<b>This command can only be used by ingame players.";
 | 
			
		||||
	public static final String commandToFewArgs = "<b>Too few arguments. <i>Use like this:";
 | 
			
		||||
	public static final String commandToManyArgs = "<b>Strange argument \"<p>%s<b>\". <i>Use the command like this:";
 | 
			
		||||
}
 | 
			
		||||
@@ -1,469 +0,0 @@
 | 
			
		||||
package com.massivecraft.factions.zcore;
 | 
			
		||||
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import java.util.Map.Entry;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.command.CommandSender;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
 | 
			
		||||
import com.massivecraft.factions.zcore.MCommand;
 | 
			
		||||
import com.massivecraft.factions.zcore.MPlugin;
 | 
			
		||||
import com.massivecraft.mcore.util.PermUtil;
 | 
			
		||||
import com.massivecraft.mcore.util.Txt;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
public abstract class MCommand<T extends MPlugin>
 | 
			
		||||
{
 | 
			
		||||
	public T p;
 | 
			
		||||
	
 | 
			
		||||
	// The sub-commands to this command
 | 
			
		||||
	public List<MCommand<?>> subCommands;
 | 
			
		||||
	public void addSubCommand(MCommand<?> subCommand)
 | 
			
		||||
	{
 | 
			
		||||
		subCommand.commandChain.addAll(this.commandChain);
 | 
			
		||||
		subCommand.commandChain.add(this);
 | 
			
		||||
		this.subCommands.add(subCommand);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// The different names this commands will react to  
 | 
			
		||||
	public List<String> aliases;
 | 
			
		||||
	
 | 
			
		||||
	// Information on the args
 | 
			
		||||
	public List<String> requiredArgs;
 | 
			
		||||
	public LinkedHashMap<String, String> optionalArgs;
 | 
			
		||||
	public boolean errorOnToManyArgs = true;
 | 
			
		||||
	
 | 
			
		||||
	// FIELD: Help Short
 | 
			
		||||
	// This field may be left blank and will in such case be loaded from the permissions node instead.
 | 
			
		||||
	// Thus make sure the permissions node description is an action description like "eat hamburgers" or "do admin stuff".
 | 
			
		||||
	private String helpShort;
 | 
			
		||||
	public void setHelpShort(String val) { this.helpShort = val; }
 | 
			
		||||
	public String getHelpShort()
 | 
			
		||||
	{
 | 
			
		||||
		if (this.helpShort == null)
 | 
			
		||||
		{
 | 
			
		||||
			String pdesc = PermUtil.getDescription(permission);
 | 
			
		||||
			if (pdesc != null)
 | 
			
		||||
			{
 | 
			
		||||
				return pdesc;
 | 
			
		||||
			}
 | 
			
		||||
			return "*info unavailable*";
 | 
			
		||||
		}
 | 
			
		||||
		return this.helpShort;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public List<String> helpLong;
 | 
			
		||||
	public CommandVisibility visibility;
 | 
			
		||||
	
 | 
			
		||||
	// Some information on permissions
 | 
			
		||||
	public boolean senderMustBePlayer;
 | 
			
		||||
	public String permission;
 | 
			
		||||
	
 | 
			
		||||
	// Information available on execution of the command
 | 
			
		||||
	public CommandSender sender; // Will always be set
 | 
			
		||||
	public Player me; // Will only be set when the sender is a player
 | 
			
		||||
	public boolean senderIsConsole;
 | 
			
		||||
	public List<String> args; // Will contain the arguments, or and empty list if there are none.
 | 
			
		||||
	public List<MCommand<?>> commandChain = new ArrayList<MCommand<?>>(); // The command chain used to execute this command
 | 
			
		||||
	
 | 
			
		||||
	public MCommand(T p)
 | 
			
		||||
	{
 | 
			
		||||
		this.p = p;
 | 
			
		||||
		
 | 
			
		||||
		this.permission = null;
 | 
			
		||||
		
 | 
			
		||||
		this.subCommands = new ArrayList<MCommand<?>>();
 | 
			
		||||
		this.aliases = new ArrayList<String>();
 | 
			
		||||
		
 | 
			
		||||
		this.requiredArgs = new ArrayList<String>();
 | 
			
		||||
		this.optionalArgs = new LinkedHashMap<String, String>();
 | 
			
		||||
		
 | 
			
		||||
		this.helpShort = null;
 | 
			
		||||
		this.helpLong = new ArrayList<String>();
 | 
			
		||||
		this.visibility = CommandVisibility.VISIBLE;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// The commandChain is a list of the parent command chain used to get to this command.
 | 
			
		||||
	public void execute(CommandSender sender, List<String> args, List<MCommand<?>> commandChain)
 | 
			
		||||
	{
 | 
			
		||||
		// Set the execution-time specific variables
 | 
			
		||||
		this.sender = sender;
 | 
			
		||||
		if (sender instanceof Player)
 | 
			
		||||
		{
 | 
			
		||||
			this.me = (Player)sender;
 | 
			
		||||
			this.senderIsConsole = false;
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			this.me = null;
 | 
			
		||||
			this.senderIsConsole = true;
 | 
			
		||||
		}
 | 
			
		||||
		this.args = args;
 | 
			
		||||
		this.commandChain = commandChain;
 | 
			
		||||
 | 
			
		||||
		// Is there a matching sub command?
 | 
			
		||||
		if (args.size() > 0 )
 | 
			
		||||
		{
 | 
			
		||||
			for (MCommand<?> subCommand: this.subCommands)
 | 
			
		||||
			{
 | 
			
		||||
				if (subCommand.aliases.contains(args.get(0)))
 | 
			
		||||
				{
 | 
			
		||||
					args.remove(0);
 | 
			
		||||
					commandChain.add(this);
 | 
			
		||||
					subCommand.execute(sender, args, commandChain);
 | 
			
		||||
					return;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if ( ! validCall(this.sender, this.args)) return;
 | 
			
		||||
		
 | 
			
		||||
		if ( ! this.isEnabled()) return;
 | 
			
		||||
		
 | 
			
		||||
		perform();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void execute(CommandSender sender, List<String> args)
 | 
			
		||||
	{
 | 
			
		||||
		execute(sender, args, new ArrayList<MCommand<?>>());
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// This is where the command action is performed.
 | 
			
		||||
	public abstract void perform();
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	// Call Validation
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * In this method we validate that all prerequisites to perform this command has been met.
 | 
			
		||||
	 */
 | 
			
		||||
	// TODO: There should be a boolean for silence 
 | 
			
		||||
	public boolean validCall(CommandSender sender, List<String> args)
 | 
			
		||||
	{
 | 
			
		||||
		if ( ! validSenderType(sender, true))
 | 
			
		||||
		{
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if ( ! validSenderPermissions(sender, true))
 | 
			
		||||
		{
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if ( ! validArgs(args, sender))
 | 
			
		||||
		{
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public boolean isEnabled()
 | 
			
		||||
	{
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public boolean validSenderType(CommandSender sender, boolean informSenderIfNot)
 | 
			
		||||
	{
 | 
			
		||||
		if (this.senderMustBePlayer && ! (sender instanceof Player))
 | 
			
		||||
		{
 | 
			
		||||
			if (informSenderIfNot)
 | 
			
		||||
			{
 | 
			
		||||
				msg(Lang.commandSenderMustBePlayer);
 | 
			
		||||
			}
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public boolean validSenderPermissions(CommandSender sender, boolean informSenderIfNot)
 | 
			
		||||
	{
 | 
			
		||||
		if (this.permission == null) return true;
 | 
			
		||||
		return PermUtil.has(sender, this.permission, informSenderIfNot);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public boolean validArgs(List<String> args, CommandSender sender)
 | 
			
		||||
	{
 | 
			
		||||
		if (args.size() < this.requiredArgs.size())
 | 
			
		||||
		{
 | 
			
		||||
			if (sender != null)
 | 
			
		||||
			{
 | 
			
		||||
				msg(Lang.commandToFewArgs);
 | 
			
		||||
				sender.sendMessage(this.getUseageTemplate());
 | 
			
		||||
			}
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (args.size() > this.requiredArgs.size() + this.optionalArgs.size() && this.errorOnToManyArgs)
 | 
			
		||||
		{
 | 
			
		||||
			if (sender != null)
 | 
			
		||||
			{
 | 
			
		||||
				// Get the to many string slice
 | 
			
		||||
				List<String> theToMany = args.subList(this.requiredArgs.size() + this.optionalArgs.size(), args.size());
 | 
			
		||||
				msg(Lang.commandToManyArgs, Txt.implode(theToMany, " "));
 | 
			
		||||
				sender.sendMessage(this.getUseageTemplate());
 | 
			
		||||
			}
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
	public boolean validArgs(List<String> args)
 | 
			
		||||
	{
 | 
			
		||||
		return this.validArgs(args, null);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	// Help and Usage information
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	
 | 
			
		||||
	public String getUseageTemplate(List<MCommand<?>> commandChain, boolean addShortHelp)
 | 
			
		||||
	{
 | 
			
		||||
		StringBuilder ret = new StringBuilder();
 | 
			
		||||
		ret.append(Txt.parse("<c>"));
 | 
			
		||||
		ret.append('/');
 | 
			
		||||
		
 | 
			
		||||
		for (MCommand<?> mc : commandChain)
 | 
			
		||||
		{
 | 
			
		||||
			ret.append(Txt.implode(mc.aliases, ","));
 | 
			
		||||
			ret.append(' ');
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		ret.append(Txt.implode(this.aliases, ","));
 | 
			
		||||
		
 | 
			
		||||
		List<String> args = new ArrayList<String>();
 | 
			
		||||
		
 | 
			
		||||
		for (String requiredArg : this.requiredArgs)
 | 
			
		||||
		{
 | 
			
		||||
			args.add("<"+requiredArg+">");
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		for (Entry<String, String> optionalArg : this.optionalArgs.entrySet())
 | 
			
		||||
		{
 | 
			
		||||
			String val = optionalArg.getValue();
 | 
			
		||||
			if (val == null)
 | 
			
		||||
			{
 | 
			
		||||
				val = "";
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				val = "="+val;
 | 
			
		||||
			}
 | 
			
		||||
			args.add("["+optionalArg.getKey()+val+"]");
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (args.size() > 0)
 | 
			
		||||
		{
 | 
			
		||||
			ret.append(Txt.parse("<p> "));
 | 
			
		||||
			ret.append(Txt.implode(args, " "));
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (addShortHelp)
 | 
			
		||||
		{
 | 
			
		||||
			ret.append(Txt.parse(" <i>"));
 | 
			
		||||
			ret.append(this.getHelpShort());
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		return ret.toString();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public String getUseageTemplate(boolean addShortHelp)
 | 
			
		||||
	{
 | 
			
		||||
		return getUseageTemplate(this.commandChain, addShortHelp);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public String getUseageTemplate()
 | 
			
		||||
	{
 | 
			
		||||
		return getUseageTemplate(false);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	// Message Sending Helpers
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	
 | 
			
		||||
	public void msg(String str, Object... args)
 | 
			
		||||
	{
 | 
			
		||||
		sender.sendMessage(Txt.parse(str, args));
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void sendMessage(String msg)
 | 
			
		||||
	{
 | 
			
		||||
		sender.sendMessage(msg);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void sendMessage(List<String> msgs)
 | 
			
		||||
	{
 | 
			
		||||
		for(String msg : msgs)
 | 
			
		||||
		{
 | 
			
		||||
			this.sendMessage(msg);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	// Argument Readers
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	
 | 
			
		||||
	// Is set? ======================
 | 
			
		||||
	public boolean argIsSet(int idx)
 | 
			
		||||
	{
 | 
			
		||||
		if (this.args.size() < idx+1)
 | 
			
		||||
		{
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// STRING ======================
 | 
			
		||||
	public String argAsString(int idx, String def)
 | 
			
		||||
	{
 | 
			
		||||
		if (this.args.size() < idx+1)
 | 
			
		||||
		{
 | 
			
		||||
			return def;
 | 
			
		||||
		}
 | 
			
		||||
		return this.args.get(idx);
 | 
			
		||||
	}
 | 
			
		||||
	public String argAsString(int idx)
 | 
			
		||||
	{
 | 
			
		||||
		return this.argAsString(idx, null);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// INT ======================
 | 
			
		||||
	public Integer strAsInt(String str, Integer def)
 | 
			
		||||
	{
 | 
			
		||||
		if (str == null) return def;
 | 
			
		||||
		try
 | 
			
		||||
		{
 | 
			
		||||
			Integer ret = Integer.parseInt(str);
 | 
			
		||||
			return ret;
 | 
			
		||||
		}
 | 
			
		||||
		catch (Exception e)
 | 
			
		||||
		{
 | 
			
		||||
			return def;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	public Integer argAsInt(int idx, Integer def)
 | 
			
		||||
	{
 | 
			
		||||
		return strAsInt(this.argAsString(idx), def);
 | 
			
		||||
	}
 | 
			
		||||
	public Integer argAsInt(int idx)
 | 
			
		||||
	{
 | 
			
		||||
		return this.argAsInt(idx, null);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// Double ======================
 | 
			
		||||
	public Double strAsDouble(String str, Double def)
 | 
			
		||||
	{
 | 
			
		||||
		if (str == null) return def;
 | 
			
		||||
		try
 | 
			
		||||
		{
 | 
			
		||||
			Double ret = Double.parseDouble(str);
 | 
			
		||||
			return ret;
 | 
			
		||||
		}
 | 
			
		||||
		catch (Exception e)
 | 
			
		||||
		{
 | 
			
		||||
			return def;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	public Double argAsDouble(int idx, Double def)
 | 
			
		||||
	{
 | 
			
		||||
		return strAsDouble(this.argAsString(idx), def);
 | 
			
		||||
	}
 | 
			
		||||
	public Double argAsDouble(int idx)
 | 
			
		||||
	{
 | 
			
		||||
		return this.argAsDouble(idx, null);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// TODO: Go through the str conversion for the other arg-readers as well.
 | 
			
		||||
	// Boolean ======================
 | 
			
		||||
	public Boolean strAsBool(String str)
 | 
			
		||||
	{
 | 
			
		||||
		str = str.toLowerCase();
 | 
			
		||||
		if (str.startsWith("y") || str.startsWith("t") || str.startsWith("on") || str.startsWith("+") || str.startsWith("1"))
 | 
			
		||||
		{
 | 
			
		||||
			return true;
 | 
			
		||||
		}
 | 
			
		||||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
	public Boolean argAsBool(int idx, Boolean def)
 | 
			
		||||
	{
 | 
			
		||||
		String str = this.argAsString(idx);
 | 
			
		||||
		if (str == null) return def;
 | 
			
		||||
		
 | 
			
		||||
		return strAsBool(str);
 | 
			
		||||
	}
 | 
			
		||||
	public Boolean argAsBool(int idx)
 | 
			
		||||
	{
 | 
			
		||||
		return this.argAsBool(idx, false);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// PLAYER ======================
 | 
			
		||||
	public Player strAsPlayer(String name, Player def, boolean msg)
 | 
			
		||||
	{
 | 
			
		||||
		Player ret = def;
 | 
			
		||||
		
 | 
			
		||||
		if (name != null)
 | 
			
		||||
		{
 | 
			
		||||
			Player player = Bukkit.getServer().getPlayer(name);
 | 
			
		||||
			if (player != null)
 | 
			
		||||
			{
 | 
			
		||||
				ret = player;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (msg && ret == null)
 | 
			
		||||
		{
 | 
			
		||||
			this.msg("<b>No player \"<p>%s<b>\" could not be found.", name);			
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		return ret;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public Player argAsPlayer(int idx, Player def, boolean msg)
 | 
			
		||||
	{
 | 
			
		||||
		return this.strAsPlayer(this.argAsString(idx), def, msg);
 | 
			
		||||
	}
 | 
			
		||||
	public Player argAsPlayer(int idx, Player def)
 | 
			
		||||
	{
 | 
			
		||||
		return this.argAsPlayer(idx, def, true);
 | 
			
		||||
	}
 | 
			
		||||
	public Player argAsPlayer(int idx)
 | 
			
		||||
	{
 | 
			
		||||
		return this.argAsPlayer(idx, null);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// BEST PLAYER MATCH ======================
 | 
			
		||||
	public Player strAsBestPlayerMatch(String name, Player def, boolean msg)
 | 
			
		||||
	{
 | 
			
		||||
		Player ret = def;
 | 
			
		||||
		
 | 
			
		||||
		if (name != null)
 | 
			
		||||
		{
 | 
			
		||||
			List<Player> players = Bukkit.getServer().matchPlayer(name);
 | 
			
		||||
			if (players.size() > 0)
 | 
			
		||||
			{
 | 
			
		||||
				ret = players.get(0);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (msg && ret == null)
 | 
			
		||||
		{
 | 
			
		||||
			this.msg("<b>No player match found for \"<p>%s<b>\".", name);
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		return ret;
 | 
			
		||||
	}
 | 
			
		||||
	public Player argAsBestPlayerMatch(int idx, Player def, boolean msg)
 | 
			
		||||
	{
 | 
			
		||||
		return this.strAsBestPlayerMatch(this.argAsString(idx), def, msg);
 | 
			
		||||
	}
 | 
			
		||||
	public Player argAsBestPlayerMatch(int idx, Player def)
 | 
			
		||||
	{
 | 
			
		||||
		return this.argAsBestPlayerMatch(idx, def, true);
 | 
			
		||||
	}
 | 
			
		||||
	public Player argAsBestPlayerMatch(int idx)
 | 
			
		||||
	{
 | 
			
		||||
		return this.argAsPlayer(idx, null);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -1,89 +0,0 @@
 | 
			
		||||
package com.massivecraft.factions.zcore;
 | 
			
		||||
 | 
			
		||||
import java.lang.reflect.Modifier;
 | 
			
		||||
import java.util.logging.Level;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.plugin.java.JavaPlugin;
 | 
			
		||||
 | 
			
		||||
import com.massivecraft.mcore.util.Txt;
 | 
			
		||||
import com.massivecraft.mcore.xlib.gson.Gson;
 | 
			
		||||
import com.massivecraft.mcore.xlib.gson.GsonBuilder;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
public abstract class MPlugin extends JavaPlugin
 | 
			
		||||
{	
 | 
			
		||||
	// Persist related
 | 
			
		||||
	public Gson gson;	
 | 
			
		||||
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	// ENABLE
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	private long timeEnableStart;
 | 
			
		||||
	public boolean preEnable()
 | 
			
		||||
	{
 | 
			
		||||
		log("=== ENABLE START ===");
 | 
			
		||||
		timeEnableStart = System.currentTimeMillis();
 | 
			
		||||
		
 | 
			
		||||
		// Ensure basefolder exists!
 | 
			
		||||
		this.getDataFolder().mkdirs();
 | 
			
		||||
 | 
			
		||||
		this.gson = this.getGsonBuilder().create();
 | 
			
		||||
		
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void postEnable()
 | 
			
		||||
	{
 | 
			
		||||
		log("=== ENABLE DONE (Took "+(System.currentTimeMillis()-timeEnableStart)+"ms) ===");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void onDisable()
 | 
			
		||||
	{
 | 
			
		||||
		log("Disabled");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void suicide()
 | 
			
		||||
	{
 | 
			
		||||
		log("Now I suicide!");
 | 
			
		||||
		this.getServer().getPluginManager().disablePlugin(this);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	// Some inits...
 | 
			
		||||
	// You are supposed to override these in the plugin if you aren't satisfied with the defaults
 | 
			
		||||
	// The goal is that you always will be satisfied though.
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
 | 
			
		||||
	public GsonBuilder getGsonBuilder()
 | 
			
		||||
	{
 | 
			
		||||
		return new GsonBuilder()
 | 
			
		||||
		.setPrettyPrinting()
 | 
			
		||||
		.disableHtmlEscaping()
 | 
			
		||||
		.serializeNulls()
 | 
			
		||||
		.excludeFieldsWithModifiers(Modifier.TRANSIENT, Modifier.VOLATILE);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	// LOGGING
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	public void log(Object msg)
 | 
			
		||||
	{
 | 
			
		||||
		log(Level.INFO, msg);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void log(String str, Object... args)
 | 
			
		||||
	{
 | 
			
		||||
		log(Level.INFO, Txt.parse(str, args));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void log(Level level, String str, Object... args)
 | 
			
		||||
	{
 | 
			
		||||
		log(level, Txt.parse(str, args));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void log(Level level, Object msg)
 | 
			
		||||
	{
 | 
			
		||||
		Bukkit.getLogger().log(level, "["+this.getDescription().getFullName()+"] "+msg);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user