2011-07-18 22:06:02 +02:00
|
|
|
package com.massivecraft.factions;
|
2011-02-06 13:36:11 +01:00
|
|
|
|
|
|
|
import java.util.*;
|
2011-10-27 15:48:14 +02:00
|
|
|
import java.util.logging.Level;
|
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-24 02:33:30 +02:00
|
|
|
import com.massivecraft.factions.struct.FFlag;
|
2011-10-24 01:37:51 +02:00
|
|
|
import com.massivecraft.factions.struct.FPerm;
|
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: invites
|
|
|
|
// Where string is a lowercase player name
|
|
|
|
private Set<String> invites;
|
2011-10-24 03:02:25 +02:00
|
|
|
public void invite(FPlayer fplayer) { this.invites.add(fplayer.getId().toLowerCase()); }
|
|
|
|
public void deinvite(FPlayer fplayer) { this.invites.remove(fplayer.getId().toLowerCase()); }
|
|
|
|
public boolean isInvited(FPlayer fplayer) { return this.invites.contains(fplayer.getId().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; }
|
2011-10-24 09:28:08 +02:00
|
|
|
public String getTag(RelationParticipator observer)
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
2011-10-24 09:28:08 +02:00
|
|
|
if (observer == 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-24 09:28:08 +02:00
|
|
|
return this.getTag(this.getColorTo(observer).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
|
|
|
|
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))
|
|
|
|
{
|
2011-10-27 15:48:14 +02:00
|
|
|
if ( ! Econ.getMethod().createAccount(aid))
|
|
|
|
{
|
|
|
|
P.p.log(Level.SEVERE, "Error creating faction bank account through Register: "+aid);
|
2011-11-23 07:11:30 +01:00
|
|
|
// return null;
|
2011-10-27 15:48:14 +02:00
|
|
|
}
|
2011-10-12 18:48:47 +02:00
|
|
|
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...
|
2011-10-24 02:33:30 +02:00
|
|
|
private Map<FFlag, Boolean> flagOverrides; // Contains the modifications to the default values
|
|
|
|
public boolean getFlag(FFlag flag)
|
2011-10-23 20:50:49 +02:00
|
|
|
{
|
|
|
|
Boolean ret = this.flagOverrides.get(flag);
|
|
|
|
if (ret == null) ret = flag.getDefault();
|
|
|
|
return ret;
|
|
|
|
}
|
2011-10-24 02:33:30 +02:00
|
|
|
public void setFlag(FFlag flag, boolean value)
|
2011-10-23 20:50:49 +02:00
|
|
|
{
|
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-24 01:37:51 +02:00
|
|
|
private Map<FPerm, Set<Rel>> permOverrides; // Contains the modifications to the default values
|
|
|
|
public Set<Rel> getPermittedRelations(FPerm perm)
|
2011-10-23 23:17:02 +02:00
|
|
|
{
|
|
|
|
Set<Rel> ret = this.permOverrides.get(perm);
|
|
|
|
if (ret == null) ret = perm.getDefault();
|
|
|
|
return ret;
|
|
|
|
}
|
2011-10-25 21:18:08 +02:00
|
|
|
|
|
|
|
public void addPermittedRelation(FPerm perm, Rel rel)
|
|
|
|
{
|
|
|
|
Set<Rel> newPermittedRelations = EnumSet.noneOf(Rel.class);
|
|
|
|
newPermittedRelations.addAll(this.getPermittedRelations(perm));
|
|
|
|
newPermittedRelations.add(rel);
|
|
|
|
this.setPermittedRelations(perm, newPermittedRelations);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void removePermittedRelation(FPerm perm, Rel rel)
|
|
|
|
{
|
|
|
|
Set<Rel> newPermittedRelations = EnumSet.noneOf(Rel.class);
|
|
|
|
newPermittedRelations.addAll(this.getPermittedRelations(perm));
|
|
|
|
newPermittedRelations.remove(rel);
|
|
|
|
this.setPermittedRelations(perm, newPermittedRelations);
|
|
|
|
}
|
|
|
|
|
2011-10-24 02:33:30 +02:00
|
|
|
public void setPermittedRelations(FPerm perm, Set<Rel> rels)
|
2011-10-23 23:17:02 +02:00
|
|
|
{
|
2011-10-25 21:18:08 +02:00
|
|
|
if (perm.getDefault().equals(rels))
|
2011-10-23 23:17:02 +02:00
|
|
|
{
|
|
|
|
this.permOverrides.remove(perm);
|
|
|
|
return;
|
|
|
|
}
|
2011-10-24 02:33:30 +02:00
|
|
|
this.permOverrides.put(perm, rels);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setPermittedRelations(FPerm perm, Rel... rels)
|
|
|
|
{
|
|
|
|
Set<Rel> temp = new HashSet<Rel>();
|
|
|
|
temp.addAll(Arrays.asList(rels));
|
|
|
|
this.setPermittedRelations(perm, temp);
|
2011-10-23 23:17:02 +02:00
|
|
|
}
|
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.money = 0.0;
|
2011-10-24 02:33:30 +02:00
|
|
|
this.flagOverrides = new LinkedHashMap<FFlag, Boolean>();
|
2011-10-24 01:37:51 +02:00
|
|
|
this.permOverrides = new LinkedHashMap<FPerm, Set<Rel>>();
|
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
|
2011-10-24 11:07:06 +02:00
|
|
|
public String describeTo(RelationParticipator observer, boolean ucfirst)
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-24 11:07:06 +02:00
|
|
|
return RelationUtil.describeThatToMe(this, observer, ucfirst);
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2011-10-24 11:07:06 +02:00
|
|
|
public String describeTo(RelationParticipator observer)
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-24 11:07:06 +02:00
|
|
|
return RelationUtil.describeThatToMe(this, observer);
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2011-10-24 11:07:06 +02:00
|
|
|
public Rel getRelationTo(RelationParticipator observer)
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-24 11:07:06 +02:00
|
|
|
return RelationUtil.getRelationOfThatToMe(this, observer);
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2011-10-24 11:07:06 +02:00
|
|
|
public Rel getRelationTo(RelationParticipator observer, boolean ignorePeaceful)
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-24 11:07:06 +02:00
|
|
|
return RelationUtil.getRelationOfThatToMe(this, observer, ignorePeaceful);
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2011-10-24 11:07:06 +02:00
|
|
|
public ChatColor getColorTo(RelationParticipator observer)
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-24 11:07:06 +02:00
|
|
|
return RelationUtil.getColorOfThatToMe(this, observer);
|
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-11-24 16:27:14 +01:00
|
|
|
public Map<Rel, List<String>> getFactionTagsPerRelation()
|
|
|
|
{
|
|
|
|
Map<Rel, List<String>> ret = new HashMap<Rel, List<String>>();
|
|
|
|
for (Rel rel : Rel.values())
|
|
|
|
{
|
|
|
|
ret.put(rel, new ArrayList<String>());
|
|
|
|
}
|
|
|
|
for (Faction faction : Factions.i.get())
|
|
|
|
{
|
|
|
|
Rel relation = faction.getRelationTo(this);
|
|
|
|
ret.get(relation).add(faction.getTag(this));
|
|
|
|
}
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
2011-10-24 03:02:25 +02:00
|
|
|
// TODO: Implement a has enough feature.
|
2011-02-06 13:36:11 +01:00
|
|
|
//----------------------------------------------//
|
|
|
|
// Power
|
|
|
|
//----------------------------------------------//
|
2011-10-08 22:03:44 +02:00
|
|
|
public double getPower()
|
|
|
|
{
|
2011-10-24 02:33:30 +02:00
|
|
|
if (this.getFlag(FFlag.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-24 02:33:30 +02:00
|
|
|
if (this.getFlag(FFlag.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-24 02:33:30 +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-24 02:33:30 +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-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
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//----------------------------------------------//
|
|
|
|
// 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
|
|
|
}
|