106 lines
3.2 KiB
Java
106 lines
3.2 KiB
Java
package com.massivecraft.factions.cmd;
|
|
|
|
import com.massivecraft.factions.*;
|
|
import com.massivecraft.factions.struct.Permission;
|
|
import com.massivecraft.factions.struct.Role;
|
|
import com.massivecraft.factions.zcore.util.TL;
|
|
|
|
|
|
public class CmdOwner extends FCommand {
|
|
|
|
/**
|
|
* @author FactionsUUID Team
|
|
*/
|
|
|
|
public CmdOwner() {
|
|
super();
|
|
this.aliases.addAll(Aliases.owner_owner);
|
|
this.optionalArgs.put("player name", "you");
|
|
|
|
this.requirements = new CommandRequirements.Builder(Permission.OWNER)
|
|
.withRole(Role.LEADER)
|
|
.playerOnly()
|
|
.memberOnly()
|
|
.build();
|
|
}
|
|
|
|
// TODO: Fix colors!
|
|
|
|
@Override
|
|
public void perform(CommandContext context) {
|
|
boolean hasBypass = context.fPlayer.isAdminBypassing();
|
|
|
|
if (!hasBypass && !context.assertHasFaction()) {
|
|
return;
|
|
}
|
|
|
|
if (!Conf.ownedAreasEnabled) {
|
|
context.msg(TL.COMMAND_OWNER_DISABLED);
|
|
return;
|
|
}
|
|
|
|
if (!hasBypass && Conf.ownedAreasLimitPerFaction > 0 && context.faction.getCountOfClaimsWithOwners() >= Conf.ownedAreasLimitPerFaction) {
|
|
context.msg(TL.COMMAND_OWNER_LIMIT, Conf.ownedAreasLimitPerFaction);
|
|
return;
|
|
}
|
|
|
|
if (!hasBypass && !context.assertMinRole(Conf.ownedAreasModeratorsCanSet ? Role.MODERATOR : Role.LEADER)) {
|
|
return;
|
|
}
|
|
|
|
FLocation flocation = new FLocation(context.fPlayer);
|
|
|
|
Faction factionHere = Board.getInstance().getFactionAt(flocation);
|
|
if (factionHere != context.faction) {
|
|
if (!factionHere.isNormal()) {
|
|
context.msg(TL.COMMAND_OWNER_NOTCLAIMED);
|
|
return;
|
|
}
|
|
|
|
if (!hasBypass) {
|
|
context.msg(TL.COMMAND_OWNER_WRONGFACTION);
|
|
return;
|
|
}
|
|
}
|
|
|
|
FPlayer target = context.argAsBestFPlayerMatch(0, context.fPlayer);
|
|
if (target == null) {
|
|
return;
|
|
}
|
|
|
|
String playerName = target.getName();
|
|
|
|
if (target.getFaction() != context.faction) {
|
|
context.msg(TL.COMMAND_OWNER_NOTMEMBER, playerName);
|
|
return;
|
|
}
|
|
|
|
// if no player name was passed, and this claim does already have owners set, clear them
|
|
if (context.args.isEmpty() && context.faction.doesLocationHaveOwnersSet(flocation)) {
|
|
context.faction.clearClaimOwnership(flocation);
|
|
context.msg(TL.COMMAND_OWNER_CLEARED);
|
|
return;
|
|
}
|
|
|
|
if (context.faction.isPlayerInOwnerList(target, flocation)) {
|
|
context.faction.removePlayerAsOwner(target, flocation);
|
|
context.msg(TL.COMMAND_OWNER_REMOVED, playerName);
|
|
return;
|
|
}
|
|
|
|
// 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.econCostOwner, TL.COMMAND_OWNER_TOSET, TL.COMMAND_OWNER_FORSET)) {
|
|
return;
|
|
}
|
|
|
|
context.faction.setPlayerAsOwner(target, flocation);
|
|
|
|
context.msg(TL.COMMAND_OWNER_ADDED, playerName);
|
|
}
|
|
|
|
@Override
|
|
public TL getUsageTranslation() {
|
|
return TL.COMMAND_OWNER_DESCRIPTION;
|
|
}
|
|
}
|