2011-07-18 22:06:02 +02:00
|
|
|
package com.massivecraft.factions;
|
2011-02-06 13:36:11 +01:00
|
|
|
|
|
|
|
import java.util.*;
|
2011-08-22 22:13:12 +02:00
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
2011-03-18 17:33:23 +01:00
|
|
|
import java.util.Map.Entry;
|
2011-02-06 13:36:11 +01:00
|
|
|
|
|
|
|
import org.bukkit.ChatColor;
|
2011-03-23 17:39:56 +01:00
|
|
|
import org.bukkit.Location;
|
2011-02-06 13:36:11 +01:00
|
|
|
import org.bukkit.entity.Player;
|
2011-07-18 22:06:02 +02:00
|
|
|
|
2011-10-12 17:25:01 +02:00
|
|
|
import com.massivecraft.factions.iface.EconomyParticipator;
|
|
|
|
import com.massivecraft.factions.iface.RelationParticipator;
|
|
|
|
import com.massivecraft.factions.integration.Econ;
|
2011-10-23 20:50:49 +02:00
|
|
|
import com.massivecraft.factions.struct.FactionFlag;
|
2011-10-23 23:17:02 +02:00
|
|
|
import com.massivecraft.factions.struct.FactionPerm;
|
2011-10-13 05:31:18 +02:00
|
|
|
import com.massivecraft.factions.struct.Permission;
|
2011-10-23 17:30:41 +02:00
|
|
|
import com.massivecraft.factions.struct.Rel;
|
2011-07-18 22:06:02 +02:00
|
|
|
import com.massivecraft.factions.util.*;
|
2011-10-08 22:03:44 +02:00
|
|
|
import com.massivecraft.factions.zcore.persist.Entity;
|
2011-10-12 17:25:01 +02:00
|
|
|
import com.nijikokun.register.payment.Method.MethodAccount;
|
2011-02-06 13:36:11 +01:00
|
|
|
|
|
|
|
|
2011-10-12 17:25:01 +02:00
|
|
|
public class Faction extends Entity implements EconomyParticipator
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
|
|
|
// FIELD: relationWish
|
2011-10-23 17:30:41 +02:00
|
|
|
private Map<String, Rel> relationWish;
|
2011-02-06 13:36:11 +01:00
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
// FIELD: claimOwnership
|
|
|
|
private Map<FLocation, Set<String>> claimOwnership = new ConcurrentHashMap<FLocation, Set<String>>();
|
2011-03-22 17:20:21 +01:00
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
// FIELD: invites
|
|
|
|
// Where string is a lowercase player name
|
|
|
|
private Set<String> invites;
|
|
|
|
public void invite(FPlayer fplayer) { this.invites.add(fplayer.getName().toLowerCase()); }
|
|
|
|
public void deinvite(FPlayer fplayer) { this.invites.remove(fplayer.getName().toLowerCase()); }
|
|
|
|
public boolean isInvited(FPlayer fplayer) { return this.invites.contains(fplayer.getName().toLowerCase()); }
|
2011-03-22 17:20:21 +01:00
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
// FIELD: open
|
2011-03-22 17:20:21 +01:00
|
|
|
private boolean open;
|
2011-10-08 22:03:44 +02:00
|
|
|
public boolean getOpen() { return open; }
|
|
|
|
public void setOpen(boolean isOpen) { open = isOpen; }
|
|
|
|
|
|
|
|
// FIELD: tag
|
|
|
|
private String tag;
|
|
|
|
public String getTag() { return this.tag; }
|
|
|
|
public String getTag(String prefix) { return prefix+this.tag; }
|
|
|
|
public String getTag(Faction otherFaction)
|
|
|
|
{
|
2011-06-30 12:56:02 +02:00
|
|
|
if (otherFaction == null)
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
2011-06-30 12:56:02 +02:00
|
|
|
return getTag();
|
2011-10-08 22:03:44 +02:00
|
|
|
}
|
2011-10-22 16:00:24 +02:00
|
|
|
return this.getTag(this.getColorTo(otherFaction).toString());
|
2011-03-22 18:48:09 +01:00
|
|
|
}
|
2011-03-23 12:00:38 +01:00
|
|
|
public String getTag(FPlayer otherFplayer) {
|
2011-06-30 12:56:02 +02:00
|
|
|
if (otherFplayer == null)
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
2011-06-30 12:56:02 +02:00
|
|
|
return getTag();
|
2011-10-08 22:03:44 +02:00
|
|
|
}
|
2011-10-21 20:08:54 +02:00
|
|
|
return this.getTag(this.getColorTo(otherFplayer).toString());
|
2011-03-22 18:48:09 +01:00
|
|
|
}
|
2011-10-08 22:03:44 +02:00
|
|
|
public void setTag(String str)
|
|
|
|
{
|
|
|
|
if (Conf.factionTagForceUpperCase)
|
|
|
|
{
|
2011-03-22 18:48:09 +01:00
|
|
|
str = str.toUpperCase();
|
|
|
|
}
|
|
|
|
this.tag = str;
|
|
|
|
}
|
2011-10-08 22:03:44 +02:00
|
|
|
public String getComparisonTag() { return MiscUtil.getComparisonString(this.tag); }
|
2011-03-22 18:48:09 +01:00
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
// FIELD: description
|
|
|
|
private String description;
|
|
|
|
public String getDescription() { return this.description; }
|
|
|
|
public void setDescription(String value) { this.description = value; }
|
2011-03-23 17:39:56 +01:00
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
// FIELD: home
|
|
|
|
private Location home;
|
|
|
|
public void setHome(Location home) { this.home = home; }
|
|
|
|
public Location getHome() { confirmValidHome(); return home; }
|
|
|
|
public boolean hasHome() { return this.getHome() != null; }
|
|
|
|
public void confirmValidHome()
|
|
|
|
{
|
|
|
|
if (!Conf.homesMustBeInClaimedTerritory || this.home == null || Board.getFactionAt(new FLocation(this.home)) == this)
|
|
|
|
{
|
2011-06-30 12:17:34 +02:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2011-10-13 14:41:07 +02:00
|
|
|
msg("<b>Your faction home has been un-set since it is no longer in your territory.");
|
2011-06-30 12:17:34 +02:00
|
|
|
this.home = null;
|
|
|
|
}
|
2011-10-08 22:03:44 +02:00
|
|
|
|
|
|
|
// FIELD: lastPlayerLoggedOffTime
|
|
|
|
private transient long lastPlayerLoggedOffTime;
|
|
|
|
|
2011-10-12 17:25:01 +02:00
|
|
|
// FIELD: account (fake field)
|
2011-10-08 22:03:44 +02:00
|
|
|
// Bank functions
|
2011-10-13 14:41:07 +02:00
|
|
|
public double money;
|
2011-10-12 18:48:47 +02:00
|
|
|
public String getAccountId() { return "faction-"+this.getId(); }
|
2011-10-12 17:25:01 +02:00
|
|
|
public MethodAccount getAccount()
|
|
|
|
{
|
2011-10-12 18:48:47 +02:00
|
|
|
String aid = this.getAccountId();
|
|
|
|
|
|
|
|
// We need to override the default money given to players.
|
|
|
|
if ( ! Econ.getMethod().hasAccount(aid))
|
|
|
|
{
|
|
|
|
MethodAccount acc = Econ.getMethod().getAccount(aid);
|
|
|
|
acc.set(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
return Econ.getMethod().getAccount(aid);
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
|
|
|
|
2011-10-23 20:50:49 +02:00
|
|
|
// FIELDS: Flag management
|
|
|
|
// TODO: This will save... defaults if they where changed to...
|
|
|
|
private Map<FactionFlag, Boolean> flagOverrides; // Contains the modifications to the default values
|
|
|
|
public boolean getFlag(FactionFlag flag)
|
|
|
|
{
|
|
|
|
Boolean ret = this.flagOverrides.get(flag);
|
|
|
|
if (ret == null) ret = flag.getDefault();
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
public void setFlag(FactionFlag flag, boolean value)
|
|
|
|
{
|
2011-10-23 23:17:02 +02:00
|
|
|
if (Conf.factionFlagDefaults.get(flag).equals(value))
|
2011-10-23 20:50:49 +02:00
|
|
|
{
|
|
|
|
this.flagOverrides.remove(flag);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
this.flagOverrides.put(flag, value);
|
|
|
|
}
|
2011-10-23 23:17:02 +02:00
|
|
|
|
2011-10-23 20:50:49 +02:00
|
|
|
// FIELDS: Permission <-> Groups management
|
2011-10-23 23:17:02 +02:00
|
|
|
private Map<FactionPerm, Set<Rel>> permOverrides; // Contains the modifications to the default values
|
|
|
|
public Set<Rel> getPerm(FactionPerm perm)
|
|
|
|
{
|
|
|
|
Set<Rel> ret = this.permOverrides.get(perm);
|
|
|
|
if (ret == null) ret = perm.getDefault();
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
public void setPerm(FactionPerm perm, Set<Rel> value)
|
|
|
|
{
|
|
|
|
if (Conf.factionPermDefaults.get(perm).equals(value))
|
|
|
|
{
|
|
|
|
this.permOverrides.remove(perm);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
this.permOverrides.put(perm, value);
|
|
|
|
}
|
2011-10-23 20:50:49 +02:00
|
|
|
|
2011-10-22 18:12:15 +02:00
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
// -------------------------------------------- //
|
|
|
|
// Construct
|
|
|
|
// -------------------------------------------- //
|
|
|
|
|
|
|
|
public Faction()
|
|
|
|
{
|
2011-10-23 17:30:41 +02:00
|
|
|
this.relationWish = new HashMap<String, Rel>();
|
2011-10-08 22:03:44 +02:00
|
|
|
this.invites = new HashSet<String>();
|
|
|
|
this.open = Conf.newFactionsDefaultOpen;
|
|
|
|
this.tag = "???";
|
|
|
|
this.description = "Default faction description :(";
|
|
|
|
this.lastPlayerLoggedOffTime = 0;
|
2011-10-23 22:08:57 +02:00
|
|
|
//this.peaceful = false;
|
|
|
|
//this.peacefulExplosionsEnabled = false;
|
2011-10-08 22:03:44 +02:00
|
|
|
this.money = 0.0;
|
2011-10-23 20:50:49 +02:00
|
|
|
this.flagOverrides = new LinkedHashMap<FactionFlag, Boolean>();
|
2011-08-05 10:50:47 +02:00
|
|
|
}
|
2011-10-08 22:03:44 +02:00
|
|
|
|
2011-08-05 10:50:47 +02:00
|
|
|
|
2011-03-23 17:39:56 +01:00
|
|
|
// -------------------------------
|
|
|
|
// Understand the types
|
|
|
|
// -------------------------------
|
|
|
|
|
2011-10-23 20:50:49 +02:00
|
|
|
// TODO: These should be gone after the refactoring...
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public boolean isNormal()
|
|
|
|
{
|
2011-10-23 22:08:57 +02:00
|
|
|
//return ! (this.isNone() || this.isSafeZone() || this.isWarZone());
|
|
|
|
return ! this.isNone();
|
2011-03-23 17:39:56 +01:00
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public boolean isNone()
|
|
|
|
{
|
|
|
|
return this.getId().equals("0");
|
2011-03-23 17:39:56 +01:00
|
|
|
}
|
|
|
|
|
2011-03-22 17:20:21 +01:00
|
|
|
// -------------------------------
|
2011-10-22 17:42:13 +02:00
|
|
|
// Relation and relation colors
|
2011-03-22 17:20:21 +01:00
|
|
|
// -------------------------------
|
|
|
|
|
2011-10-12 17:25:01 +02:00
|
|
|
@Override
|
|
|
|
public String describeTo(RelationParticipator that, boolean ucfirst)
|
|
|
|
{
|
2011-10-13 14:41:07 +02:00
|
|
|
return RelationUtil.describeThatToMe(this, that, ucfirst);
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String describeTo(RelationParticipator that)
|
|
|
|
{
|
2011-10-13 14:41:07 +02:00
|
|
|
return RelationUtil.describeThatToMe(this, that);
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2011-10-23 17:30:41 +02:00
|
|
|
public Rel getRelationTo(RelationParticipator rp)
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-13 14:41:07 +02:00
|
|
|
return RelationUtil.getRelationTo(this, rp);
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2011-10-23 17:30:41 +02:00
|
|
|
public Rel getRelationTo(RelationParticipator rp, boolean ignorePeaceful)
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-13 14:41:07 +02:00
|
|
|
return RelationUtil.getRelationTo(this, rp, ignorePeaceful);
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2011-10-21 20:08:54 +02:00
|
|
|
public ChatColor getColorTo(RelationParticipator rp)
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-21 20:08:54 +02:00
|
|
|
return RelationUtil.getColorOfThatToMe(this, rp);
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
|
|
|
|
2011-10-23 17:30:41 +02:00
|
|
|
public Rel getRelationWish(Faction otherFaction)
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
|
|
|
if (this.relationWish.containsKey(otherFaction.getId()))
|
|
|
|
{
|
2011-03-22 17:20:21 +01:00
|
|
|
return this.relationWish.get(otherFaction.getId());
|
|
|
|
}
|
2011-10-23 17:30:41 +02:00
|
|
|
return Rel.NEUTRAL;
|
2011-03-22 17:20:21 +01:00
|
|
|
}
|
|
|
|
|
2011-10-23 17:30:41 +02:00
|
|
|
public void setRelationWish(Faction otherFaction, Rel relation)
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
2011-10-23 17:30:41 +02:00
|
|
|
if (this.relationWish.containsKey(otherFaction.getId()) && relation.equals(Rel.NEUTRAL))
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
2011-03-22 17:20:21 +01:00
|
|
|
this.relationWish.remove(otherFaction.getId());
|
2011-10-08 22:03:44 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2011-03-22 17:20:21 +01:00
|
|
|
this.relationWish.put(otherFaction.getId(), relation);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-02-06 13:36:11 +01:00
|
|
|
//----------------------------------------------//
|
|
|
|
// Power
|
|
|
|
//----------------------------------------------//
|
2011-10-08 22:03:44 +02:00
|
|
|
public double getPower()
|
|
|
|
{
|
2011-10-23 20:50:49 +02:00
|
|
|
if (this.getFlag(FactionFlag.INFPOWER))
|
2011-10-22 18:12:15 +02:00
|
|
|
{
|
2011-10-23 20:50:49 +02:00
|
|
|
return 999999;
|
2011-10-22 18:12:15 +02:00
|
|
|
}
|
|
|
|
|
2011-02-07 21:42:14 +01:00
|
|
|
double ret = 0;
|
2011-10-21 20:08:54 +02:00
|
|
|
for (FPlayer fplayer : this.getFPlayers())
|
|
|
|
{
|
2011-03-23 12:00:38 +01:00
|
|
|
ret += fplayer.getPower();
|
2011-02-06 13:36:11 +01:00
|
|
|
}
|
2011-10-21 20:08:54 +02:00
|
|
|
if (Conf.powerFactionMax > 0 && ret > Conf.powerFactionMax)
|
|
|
|
{
|
2011-07-24 13:10:48 +02:00
|
|
|
ret = Conf.powerFactionMax;
|
|
|
|
}
|
2011-02-06 13:36:11 +01:00
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
2011-10-21 20:08:54 +02:00
|
|
|
public double getPowerMax()
|
|
|
|
{
|
2011-10-23 20:50:49 +02:00
|
|
|
if (this.getFlag(FactionFlag.INFPOWER))
|
2011-10-22 18:12:15 +02:00
|
|
|
{
|
2011-10-23 20:50:49 +02:00
|
|
|
return 999999;
|
2011-10-22 18:12:15 +02:00
|
|
|
}
|
|
|
|
|
2011-02-07 21:42:14 +01:00
|
|
|
double ret = 0;
|
2011-10-21 20:08:54 +02:00
|
|
|
for (FPlayer fplayer : this.getFPlayers())
|
|
|
|
{
|
2011-03-23 12:00:38 +01:00
|
|
|
ret += fplayer.getPowerMax();
|
2011-02-06 13:36:11 +01:00
|
|
|
}
|
2011-10-21 20:08:54 +02:00
|
|
|
if (Conf.powerFactionMax > 0 && ret > Conf.powerFactionMax)
|
|
|
|
{
|
2011-07-24 13:10:48 +02:00
|
|
|
ret = Conf.powerFactionMax;
|
|
|
|
}
|
2011-02-06 13:36:11 +01:00
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
2011-10-21 20:08:54 +02:00
|
|
|
public int getPowerRounded()
|
|
|
|
{
|
2011-02-06 13:36:11 +01:00
|
|
|
return (int) Math.round(this.getPower());
|
|
|
|
}
|
|
|
|
|
2011-10-21 20:08:54 +02:00
|
|
|
public int getPowerMaxRounded()
|
|
|
|
{
|
2011-02-06 13:36:11 +01:00
|
|
|
return (int) Math.round(this.getPowerMax());
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getLandRounded() {
|
2011-03-22 17:20:21 +01:00
|
|
|
return Board.getFactionCoordCount(this);
|
2011-02-06 13:36:11 +01:00
|
|
|
}
|
|
|
|
|
2011-10-21 20:08:54 +02:00
|
|
|
public int getLandRoundedInWorld(String worldName)
|
|
|
|
{
|
2011-06-30 13:13:47 +02:00
|
|
|
return Board.getFactionCoordCountInWorld(this, worldName);
|
|
|
|
}
|
|
|
|
|
2011-10-21 20:08:54 +02:00
|
|
|
public boolean hasLandInflation()
|
|
|
|
{
|
2011-02-12 18:05:05 +01:00
|
|
|
return this.getLandRounded() > this.getPowerRounded();
|
2011-02-06 13:36:11 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
// -------------------------------
|
2011-10-22 17:42:13 +02:00
|
|
|
// FPlayers
|
2011-02-06 13:36:11 +01:00
|
|
|
// -------------------------------
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public ArrayList<FPlayer> getFPlayers()
|
|
|
|
{
|
2011-03-18 17:33:23 +01:00
|
|
|
ArrayList<FPlayer> ret = new ArrayList<FPlayer>();
|
2011-10-23 22:08:57 +02:00
|
|
|
//if (this.isPlayerFreeType()) return ret;
|
2011-06-10 21:14:02 +02:00
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
for (FPlayer fplayer : FPlayers.i.get())
|
|
|
|
{
|
|
|
|
if (fplayer.getFaction() == this)
|
|
|
|
{
|
2011-03-23 12:00:38 +01:00
|
|
|
ret.add(fplayer);
|
2011-02-06 13:36:11 +01:00
|
|
|
}
|
|
|
|
}
|
2011-06-10 21:14:02 +02:00
|
|
|
|
2011-02-06 13:36:11 +01:00
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public ArrayList<FPlayer> getFPlayersWhereOnline(boolean online)
|
|
|
|
{
|
2011-03-18 17:33:23 +01:00
|
|
|
ArrayList<FPlayer> ret = new ArrayList<FPlayer>();
|
2011-10-23 22:08:57 +02:00
|
|
|
//if (this.isPlayerFreeType()) return ret;
|
2011-06-10 21:14:02 +02:00
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
for (FPlayer fplayer : FPlayers.i.get())
|
|
|
|
{
|
|
|
|
if (fplayer.getFaction() == this && fplayer.isOnline() == online)
|
|
|
|
{
|
2011-03-22 17:20:21 +01:00
|
|
|
ret.add(fplayer);
|
2011-02-06 13:36:11 +01:00
|
|
|
}
|
|
|
|
}
|
2011-06-10 21:14:02 +02:00
|
|
|
|
2011-02-06 13:36:11 +01:00
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
2011-10-23 17:55:53 +02:00
|
|
|
public FPlayer getFPlayerLeader()
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
2011-10-09 20:10:19 +02:00
|
|
|
if ( ! this.isNormal()) return null;
|
2011-08-02 00:54:05 +02:00
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
for (FPlayer fplayer : FPlayers.i.get())
|
|
|
|
{
|
2011-10-23 17:30:41 +02:00
|
|
|
if (fplayer.getFaction() == this && fplayer.getRole() == Rel.LEADER)
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
2011-08-02 00:54:05 +02:00
|
|
|
return fplayer;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2011-10-23 17:30:41 +02:00
|
|
|
public ArrayList<FPlayer> getFPlayersWhereRole(Rel role)
|
2011-10-22 17:42:13 +02:00
|
|
|
{
|
2011-03-18 17:33:23 +01:00
|
|
|
ArrayList<FPlayer> ret = new ArrayList<FPlayer>();
|
2011-10-09 20:10:19 +02:00
|
|
|
if ( ! this.isNormal()) return ret;
|
2011-02-06 13:36:11 +01:00
|
|
|
|
2011-10-22 17:42:13 +02:00
|
|
|
for (FPlayer fplayer : FPlayers.i.get())
|
|
|
|
{
|
|
|
|
if (fplayer.getFaction() == this && fplayer.getRole() == role)
|
|
|
|
{
|
2011-03-22 17:20:21 +01:00
|
|
|
ret.add(fplayer);
|
2011-02-06 13:36:11 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public ArrayList<Player> getOnlinePlayers()
|
|
|
|
{
|
2011-02-06 13:36:11 +01:00
|
|
|
ArrayList<Player> ret = new ArrayList<Player>();
|
2011-10-23 22:08:57 +02:00
|
|
|
//if (this.isPlayerFreeType()) return ret;
|
2011-06-10 21:14:02 +02:00
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
for (Player player: P.p.getServer().getOnlinePlayers())
|
|
|
|
{
|
|
|
|
FPlayer fplayer = FPlayers.i.get(player);
|
|
|
|
if (fplayer.getFaction() == this)
|
|
|
|
{
|
2011-02-06 13:36:11 +01:00
|
|
|
ret.add(player);
|
|
|
|
}
|
|
|
|
}
|
2011-06-10 21:14:02 +02:00
|
|
|
|
2011-02-06 13:36:11 +01:00
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
2011-06-10 21:14:02 +02:00
|
|
|
// slightly faster check than getOnlinePlayers() if you just want to see if there are any players online
|
2011-10-08 22:03:44 +02:00
|
|
|
public boolean hasPlayersOnline()
|
|
|
|
{
|
2011-06-21 07:20:36 +02:00
|
|
|
// only real factions can have players online, not safe zone / war zone
|
2011-10-23 22:08:57 +02:00
|
|
|
//if (this.isPlayerFreeType()) return false;
|
2011-06-10 21:14:02 +02:00
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
for (Player player: P.p.getServer().getOnlinePlayers())
|
|
|
|
{
|
|
|
|
FPlayer fplayer = FPlayers.i.get(player);
|
|
|
|
if (fplayer.getFaction() == this)
|
|
|
|
{
|
2011-06-10 21:14:02 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
2011-06-21 07:20:36 +02:00
|
|
|
|
|
|
|
// even if all players are technically logged off, maybe someone was on recently enough to not consider them officially offline yet
|
2011-10-08 22:03:44 +02:00
|
|
|
if (Conf.considerFactionsReallyOfflineAfterXMinutes > 0 && System.currentTimeMillis() < lastPlayerLoggedOffTime + (Conf.considerFactionsReallyOfflineAfterXMinutes * 60000))
|
|
|
|
{
|
2011-06-21 07:20:36 +02:00
|
|
|
return true;
|
|
|
|
}
|
2011-06-10 21:14:02 +02:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public void memberLoggedOff()
|
|
|
|
{
|
|
|
|
if (this.isNormal())
|
|
|
|
{
|
2011-06-21 07:20:36 +02:00
|
|
|
lastPlayerLoggedOffTime = System.currentTimeMillis();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-02-06 13:36:11 +01:00
|
|
|
|
|
|
|
|
|
|
|
//----------------------------------------------//
|
2011-03-22 17:20:21 +01:00
|
|
|
// Messages
|
2011-02-06 13:36:11 +01:00
|
|
|
//----------------------------------------------//
|
2011-10-10 13:40:24 +02:00
|
|
|
public void msg(String message, Object... args)
|
2011-10-09 14:53:38 +02:00
|
|
|
{
|
|
|
|
message = P.p.txt.parse(message, args);
|
|
|
|
|
|
|
|
for (FPlayer fplayer : this.getFPlayersWhereOnline(true))
|
|
|
|
{
|
|
|
|
fplayer.sendMessage(message);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public void sendMessage(String message)
|
|
|
|
{
|
|
|
|
for (FPlayer fplayer : this.getFPlayersWhereOnline(true))
|
|
|
|
{
|
2011-03-22 17:20:21 +01:00
|
|
|
fplayer.sendMessage(message);
|
2011-02-06 13:36:11 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public void sendMessage(List<String> messages)
|
|
|
|
{
|
|
|
|
for (FPlayer fplayer : this.getFPlayersWhereOnline(true))
|
|
|
|
{
|
2011-03-22 17:20:21 +01:00
|
|
|
fplayer.sendMessage(messages);
|
2011-02-06 13:36:11 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
//----------------------------------------------//
|
|
|
|
// Ownership of specific claims
|
|
|
|
//----------------------------------------------//
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public void clearAllClaimOwnership()
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
claimOwnership.clear();
|
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public void clearClaimOwnership(FLocation loc)
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
claimOwnership.remove(loc);
|
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public void clearClaimOwnership(String playerName)
|
|
|
|
{
|
|
|
|
if (playerName == null || playerName.isEmpty())
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
Set<String> ownerData;
|
|
|
|
String player = playerName.toLowerCase();
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
for (Entry<FLocation, Set<String>> entry : claimOwnership.entrySet())
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
ownerData = entry.getValue();
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
if (ownerData == null) continue;
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
|
|
|
|
Iterator<String> iter = ownerData.iterator();
|
2011-10-08 22:03:44 +02:00
|
|
|
while (iter.hasNext())
|
|
|
|
{
|
|
|
|
if (iter.next().equals(player))
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
iter.remove();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
if (ownerData.isEmpty())
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
claimOwnership.remove(entry.getKey());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public int getCountOfClaimsWithOwners()
|
|
|
|
{
|
2011-08-04 06:53:10 +02:00
|
|
|
return claimOwnership.isEmpty() ? 0 : claimOwnership.size();
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public boolean doesLocationHaveOwnersSet(FLocation loc)
|
|
|
|
{
|
|
|
|
if (claimOwnership.isEmpty() || !claimOwnership.containsKey(loc))
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
return false;
|
|
|
|
}
|
2011-10-08 22:03:44 +02:00
|
|
|
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
Set<String> ownerData = claimOwnership.get(loc);
|
|
|
|
return ownerData != null && !ownerData.isEmpty();
|
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public boolean isPlayerInOwnerList(String playerName, FLocation loc)
|
|
|
|
{
|
|
|
|
if (claimOwnership.isEmpty())
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
Set<String> ownerData = claimOwnership.get(loc);
|
2011-10-08 22:03:44 +02:00
|
|
|
if (ownerData == null)
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
return false;
|
|
|
|
}
|
2011-10-08 22:03:44 +02:00
|
|
|
if (ownerData.contains(playerName.toLowerCase()))
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
return true;
|
|
|
|
}
|
2011-10-08 22:03:44 +02:00
|
|
|
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public void setPlayerAsOwner(String playerName, FLocation loc)
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
Set<String> ownerData = claimOwnership.get(loc);
|
2011-10-08 22:03:44 +02:00
|
|
|
if (ownerData == null)
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
ownerData = new HashSet<String>();
|
|
|
|
}
|
|
|
|
ownerData.add(playerName.toLowerCase());
|
|
|
|
claimOwnership.put(loc, ownerData);
|
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public void removePlayerAsOwner(String playerName, FLocation loc)
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
Set<String> ownerData = claimOwnership.get(loc);
|
2011-10-21 20:08:54 +02:00
|
|
|
if (ownerData == null)
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
ownerData.remove(playerName.toLowerCase());
|
|
|
|
claimOwnership.put(loc, ownerData);
|
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public Set<String> getOwnerList(FLocation loc)
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
return claimOwnership.get(loc);
|
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public String getOwnerListString(FLocation loc)
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
Set<String> ownerData = claimOwnership.get(loc);
|
2011-10-08 22:03:44 +02:00
|
|
|
if (ownerData == null || ownerData.isEmpty())
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
String ownerList = "";
|
|
|
|
|
|
|
|
Iterator<String> iter = ownerData.iterator();
|
|
|
|
while (iter.hasNext()) {
|
2011-10-08 22:03:44 +02:00
|
|
|
if (!ownerList.isEmpty())
|
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
ownerList += ", ";
|
|
|
|
}
|
|
|
|
ownerList += iter.next();
|
|
|
|
}
|
|
|
|
return ownerList;
|
|
|
|
}
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public boolean playerHasOwnershipRights(FPlayer fplayer, FLocation loc)
|
|
|
|
{
|
2011-10-13 05:31:18 +02:00
|
|
|
// in own faction, with sufficient role or permission to bypass ownership?
|
|
|
|
if
|
|
|
|
(
|
|
|
|
fplayer.getFaction() == this
|
|
|
|
&&
|
|
|
|
(
|
2011-10-23 17:30:41 +02:00
|
|
|
fplayer.getRole().isAtLeast(Conf.ownedAreaModeratorsBypass ? Rel.OFFICER : Rel.LEADER)
|
2011-10-13 05:31:18 +02:00
|
|
|
||
|
|
|
|
Permission.OWNERSHIP_BYPASS.has(fplayer.getPlayer())
|
|
|
|
)
|
|
|
|
)
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
// make sure claimOwnership is initialized
|
2011-10-08 22:03:44 +02:00
|
|
|
if (claimOwnership.isEmpty())
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
return true;
|
|
|
|
|
|
|
|
// need to check the ownership list, then
|
|
|
|
Set<String> ownerData = claimOwnership.get(loc);
|
|
|
|
|
|
|
|
// if no owner list, owner list is empty, or player is in owner list, they're allowed
|
2011-10-08 22:03:44 +02:00
|
|
|
if (ownerData == null || ownerData.isEmpty() || ownerData.contains(fplayer.getName().toLowerCase()))
|
Faction admins can now mark already claimed areas as owned by specific faction members. Ownership can include multiple members. New command /f owner *[player name], to set/remove ownership. This command is only available to the faction admin and optionally the faction moderators. If no player name is specified, it will either set ownership to the player running the command (if no owner is currently set) or completely clear ownership of the territory. New command /f ownerlist, to view a list of owners for the current area. Only works inside your own faction's territory. New conf.json options "ownedAreasEnabled", "ownedAreasModeratorsCanSet", "ownedAreaModeratorsBypass", "ownedAreaDenyBuild", "ownedAreaProtectMaterials", and "ownedAreaDenyUseage" (all defaulting to true) to determine whether faction moderators can set or bypass ownership (faction admin always can), and what sort of protection these owned areas have against normal members of the faction (members other than the owner(s), faction admin, and probably faction moderators). New conf.json option "ownedAreasLimitPerFaction" to limit how many owned areas can be set. New permission node "factions.ownershipBypass" which allows a player to bypass ownership protection, but only within the person's own faction.
various little tweaks and improvements to other code
moderate speed boost to FLocation code
made commandDisable permissions work for any command alias of a command, instead of just the first one
2011-07-31 03:17:00 +02:00
|
|
|
return true;
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
2011-10-05 07:33:15 +02:00
|
|
|
|
|
|
|
|
2011-02-06 13:36:11 +01:00
|
|
|
//----------------------------------------------//
|
|
|
|
// Persistance and entity management
|
|
|
|
//----------------------------------------------//
|
2011-10-08 22:03:44 +02:00
|
|
|
|
2011-03-18 17:33:23 +01:00
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
@Override
|
|
|
|
public void postDetach()
|
|
|
|
{
|
2011-10-12 18:48:47 +02:00
|
|
|
if (Econ.shouldBeUsed())
|
|
|
|
{
|
|
|
|
Econ.getMethod().getAccount(getAccountId()).remove();
|
|
|
|
}
|
|
|
|
|
|
|
|
this.getAccountId();
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
// Clean the board
|
|
|
|
Board.clean();
|
|
|
|
|
|
|
|
// Clean the fplayers
|
|
|
|
FPlayers.i.clean();
|
2011-03-18 17:33:23 +01:00
|
|
|
}
|
2011-02-06 13:36:11 +01:00
|
|
|
}
|