Starting to clean up FPlayer
This commit is contained in:
parent
6ad243c014
commit
f4d799e978
@ -41,10 +41,11 @@ public class FPlayer extends SenderEntity<FPlayer> implements EconomyParticipato
|
|||||||
public FPlayer load(FPlayer that)
|
public FPlayer load(FPlayer that)
|
||||||
{
|
{
|
||||||
this.setFactionId(that.factionId);
|
this.setFactionId(that.factionId);
|
||||||
this.role = that.role;
|
this.setRole(that.role);
|
||||||
this.title = that.title;
|
this.setTitle(that.title);
|
||||||
|
this.setPowerBoost(that.powerBoost);
|
||||||
|
|
||||||
this.power = that.power;
|
this.power = that.power;
|
||||||
this.powerBoost = that.powerBoost;
|
|
||||||
this.lastPowerUpdateTime = that.lastPowerUpdateTime;
|
this.lastPowerUpdateTime = that.lastPowerUpdateTime;
|
||||||
this.lastLoginTime = that.lastLoginTime;
|
this.lastLoginTime = that.lastLoginTime;
|
||||||
|
|
||||||
@ -55,27 +56,144 @@ public class FPlayer extends SenderEntity<FPlayer> implements EconomyParticipato
|
|||||||
public boolean isDefault()
|
public boolean isDefault()
|
||||||
{
|
{
|
||||||
if (this.hasFaction()) return false;
|
if (this.hasFaction()) return false;
|
||||||
|
|
||||||
|
// Note: we do not check role or title here since they mean nothing without a faction.
|
||||||
|
|
||||||
|
// TODO: This line looks obnoxious, investigate it.
|
||||||
if (this.getPowerRounded() != this.getPowerMaxRounded() && this.getPowerRounded() != (int) Math.round(ConfServer.powerPlayerStarting)) return false;
|
if (this.getPowerRounded() != this.getPowerMaxRounded() && this.getPowerRounded() != (int) Math.round(ConfServer.powerPlayerStarting)) return false;
|
||||||
|
|
||||||
|
if (this.hasPowerBoost()) return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// FIELDS: RAW PERMANENT
|
// FIELDS: RAW
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
// In this section of the source code we place the field declarations only.
|
||||||
|
// Each field has it's own section further down since just the getter and setter logic takes up quite some place.
|
||||||
|
|
||||||
// FIELD: factionId
|
// This is a foreign key.
|
||||||
// TODO: Ensure this one always is null in the nofaction case and never actually the ID of the nofaction-faction.
|
// A players always belongs to a faction.
|
||||||
// TODO: The getFactionId should however NEVER return null!
|
// If null the player belongs to the no-faction faction called Wilderness.
|
||||||
|
|
||||||
private String factionId = null;
|
private String factionId = null;
|
||||||
|
|
||||||
// The get methods never return null.
|
// What role does the player have in the faction?
|
||||||
|
// The default value here is MEMBER since that one would be one of the most common ones and our goal is to save database space.
|
||||||
|
// A note to self is that we can not change it from member to anything else just because we feel like it, that would corrupt database content.
|
||||||
|
private Rel role = null;
|
||||||
|
|
||||||
|
// What title does the player have in the faction?
|
||||||
|
// The title is just for fun. It's completely meaningless.
|
||||||
|
// The default case is no title since it's what you start with and also the most common case.
|
||||||
|
// The player title is similar to the faction description.
|
||||||
|
//
|
||||||
|
// Question: Can the title contain chat colors?
|
||||||
|
// Answer: Yes but in such case the policy is that they already must be parsed using Txt.parse.
|
||||||
|
// If they contain markup it should not be parsed in case we coded the system correctly.
|
||||||
|
private String title = null;
|
||||||
|
|
||||||
|
// Player usually do not have a powerboost. It defaults to 0.
|
||||||
|
// The powerBoost is a custom increase/decrease to default and maximum power.
|
||||||
|
// Note that player powerBoost and faction powerBoost are very similar.
|
||||||
|
private Double powerBoost = null;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
// FIELD: power
|
||||||
|
private double power;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
// FIELD: lastPowerUpdateTime
|
||||||
|
private long lastPowerUpdateTime;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
// FIELD: lastLoginTime
|
||||||
|
private long lastLoginTime;
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// FIELDS: RAW TRANSIENT
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
// Where did this player stand the last time we checked?
|
||||||
|
private transient PS currentChunk = null;
|
||||||
|
public PS getCurrentChunk() { return this.currentChunk; }
|
||||||
|
public void setCurrentChunk(PS currentChunk) { this.currentChunk = currentChunk.getChunk(true); }
|
||||||
|
|
||||||
|
// FIELD: mapAutoUpdating
|
||||||
|
private transient boolean mapAutoUpdating = false;
|
||||||
|
public void setMapAutoUpdating(boolean mapAutoUpdating) { this.mapAutoUpdating = mapAutoUpdating; }
|
||||||
|
public boolean isMapAutoUpdating() { return mapAutoUpdating; }
|
||||||
|
|
||||||
|
// FIELD: autoClaimEnabled
|
||||||
|
private transient Faction autoClaimFor = null;
|
||||||
|
public Faction getAutoClaimFor() { return autoClaimFor; }
|
||||||
|
public void setAutoClaimFor(Faction faction) { this.autoClaimFor = faction; }
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
// FIELD: account
|
||||||
|
public String getAccountId() { return this.getId(); }
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// CONSTRUCT
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
// GSON need this noarg constructor.
|
||||||
|
public FPlayer()
|
||||||
|
{
|
||||||
|
this.resetFactionData(false);
|
||||||
|
this.power = ConfServer.powerPlayerStarting;
|
||||||
|
this.lastPowerUpdateTime = System.currentTimeMillis();
|
||||||
|
this.lastLoginTime = System.currentTimeMillis();
|
||||||
|
this.loginPvpDisabled = (ConfServer.noPVPDamageToOthersForXSecondsAfterLogin > 0) ? true : false;
|
||||||
|
|
||||||
|
if ( ! ConfServer.newPlayerStartingFactionID.equals(Const.FACTIONID_NONE) && FactionColl.get().containsId(ConfServer.newPlayerStartingFactionID))
|
||||||
|
{
|
||||||
|
this.factionId = ConfServer.newPlayerStartingFactionID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public final void resetFactionData(boolean doSpoutUpdate)
|
||||||
|
{
|
||||||
|
// TODO: Should we not rather use ConfServer.newPlayerStartingFactionID here?
|
||||||
|
|
||||||
|
// The default neutral faction
|
||||||
|
this.setFactionId(null);
|
||||||
|
this.setRole(null);
|
||||||
|
this.setTitle(null);
|
||||||
|
|
||||||
|
this.autoClaimFor = null;
|
||||||
|
|
||||||
|
if (doSpoutUpdate)
|
||||||
|
{
|
||||||
|
SpoutFeatures.updateTitle(this, null);
|
||||||
|
SpoutFeatures.updateTitle(null, this);
|
||||||
|
SpoutFeatures.updateCape(this.getPlayer(), null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resetFactionData()
|
||||||
|
{
|
||||||
|
this.resetFactionData(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// FIELD: factionId
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
// This method never returns null
|
||||||
public String getFactionId()
|
public String getFactionId()
|
||||||
{
|
{
|
||||||
if (this.factionId == null) return Const.FACTIONID_NONE;
|
if (this.factionId == null) return Const.FACTIONID_NONE;
|
||||||
return this.factionId;
|
return this.factionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This method never returns null
|
||||||
public Faction getFaction()
|
public Faction getFaction()
|
||||||
{
|
{
|
||||||
Faction ret = FactionColl.get().get(this.getFactionId());
|
Faction ret = FactionColl.get().get(this.getFactionId());
|
||||||
@ -83,14 +201,11 @@ public class FPlayer extends SenderEntity<FPlayer> implements EconomyParticipato
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: When is this one used?
|
|
||||||
public boolean hasFaction()
|
public boolean hasFaction()
|
||||||
{
|
{
|
||||||
// TODO: Broken logic
|
|
||||||
return !this.getFactionId().equals(Const.FACTIONID_NONE);
|
return !this.getFactionId().equals(Const.FACTIONID_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// This setter is so long because it search for default/null case and takes care of updating the faction member index
|
// This setter is so long because it search for default/null case and takes care of updating the faction member index
|
||||||
public void setFactionId(String factionId)
|
public void setFactionId(String factionId)
|
||||||
{
|
{
|
||||||
@ -137,103 +252,83 @@ public class FPlayer extends SenderEntity<FPlayer> implements EconomyParticipato
|
|||||||
this.setFactionId(faction.getId());
|
this.setFactionId(faction.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
// FIELD: role
|
// FIELD: role
|
||||||
private Rel role;
|
// -------------------------------------------- //
|
||||||
public Rel getRole() { return this.role; }
|
|
||||||
public void setRole(Rel role) { this.role = role; SpoutFeatures.updateTitle(this, null); }
|
|
||||||
|
|
||||||
|
public Rel getRole()
|
||||||
|
{
|
||||||
|
if (this.role == null) return Rel.MEMBER;
|
||||||
|
return this.role;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRole(Rel role)
|
||||||
|
{
|
||||||
|
if (role == null || role == Rel.MEMBER)
|
||||||
|
{
|
||||||
|
this.role = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.role = role;
|
||||||
|
}
|
||||||
|
SpoutFeatures.updateTitle(this, null);
|
||||||
|
this.changed();
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
// FIELD: title
|
// FIELD: title
|
||||||
private String title;
|
// -------------------------------------------- //
|
||||||
public String getTitle() { return this.title; }
|
|
||||||
public void setTitle(String title) { this.title = title; }
|
|
||||||
|
|
||||||
// FIELD: power
|
public boolean hasTitle()
|
||||||
private double power;
|
{
|
||||||
|
return this.title != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTitle()
|
||||||
|
{
|
||||||
|
if (this.hasTitle()) return this.title;
|
||||||
|
return Lang.PLAYER_NOTITLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTitle(String title)
|
||||||
|
{
|
||||||
|
if (title != null)
|
||||||
|
{
|
||||||
|
title = title.trim();
|
||||||
|
if (title.length() == 0)
|
||||||
|
{
|
||||||
|
title = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.title = title;
|
||||||
|
this.changed();
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
// FIELD: powerBoost
|
// FIELD: powerBoost
|
||||||
// special increase/decrease to min and max power for this player
|
|
||||||
private double powerBoost;
|
|
||||||
public double getPowerBoost() { return this.powerBoost; }
|
|
||||||
public void setPowerBoost(double powerBoost) { this.powerBoost = powerBoost; }
|
|
||||||
|
|
||||||
// FIELD: lastPowerUpdateTime
|
|
||||||
private long lastPowerUpdateTime;
|
|
||||||
|
|
||||||
// FIELD: lastLoginTime
|
|
||||||
private long lastLoginTime;
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// FIELDS: RAW TRANSIENT
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
// Where did this player stand the last time we checked?
|
public double getPowerBoost()
|
||||||
private transient PS currentChunk = null;
|
|
||||||
public PS getCurrentChunk() { return this.currentChunk; }
|
|
||||||
public void setCurrentChunk(PS currentChunk) { this.currentChunk = currentChunk.getChunk(true); }
|
|
||||||
|
|
||||||
// FIELD: mapAutoUpdating
|
|
||||||
private transient boolean mapAutoUpdating;
|
|
||||||
public void setMapAutoUpdating(boolean mapAutoUpdating) { this.mapAutoUpdating = mapAutoUpdating; }
|
|
||||||
public boolean isMapAutoUpdating() { return mapAutoUpdating; }
|
|
||||||
|
|
||||||
// FIELD: autoClaimEnabled
|
|
||||||
private transient Faction autoClaimFor;
|
|
||||||
public Faction getAutoClaimFor() { return autoClaimFor; }
|
|
||||||
public void setAutoClaimFor(Faction faction) { this.autoClaimFor = faction; }
|
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
// FIELD: account
|
|
||||||
public String getAccountId() { return this.getId(); }
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// CONSTRUCT
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
// GSON need this noarg constructor.
|
|
||||||
public FPlayer()
|
|
||||||
{
|
{
|
||||||
this.resetFactionData(false);
|
Double ret = this.powerBoost;
|
||||||
this.power = ConfServer.powerPlayerStarting;
|
if (ret == null) ret = 0D;
|
||||||
this.lastPowerUpdateTime = System.currentTimeMillis();
|
return ret;
|
||||||
this.lastLoginTime = System.currentTimeMillis();
|
|
||||||
this.mapAutoUpdating = false;
|
|
||||||
this.autoClaimFor = null;
|
|
||||||
this.loginPvpDisabled = (ConfServer.noPVPDamageToOthersForXSecondsAfterLogin > 0) ? true : false;
|
|
||||||
this.powerBoost = 0.0;
|
|
||||||
|
|
||||||
if ( ! ConfServer.newPlayerStartingFactionID.equals(Const.FACTIONID_NONE) && FactionColl.get().containsId(ConfServer.newPlayerStartingFactionID))
|
|
||||||
{
|
|
||||||
this.factionId = ConfServer.newPlayerStartingFactionID;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void resetFactionData(boolean doSpoutUpdate)
|
public void setPowerBoost(Double powerBoost)
|
||||||
{
|
{
|
||||||
// TODO: Should we not rather use ConfServer.newPlayerStartingFactionID here?
|
if (powerBoost == null || powerBoost == 0)
|
||||||
this.factionId = Const.FACTIONID_NONE; // The default neutral faction
|
|
||||||
|
|
||||||
this.role = Rel.MEMBER;
|
|
||||||
this.title = "";
|
|
||||||
this.autoClaimFor = null;
|
|
||||||
|
|
||||||
if (doSpoutUpdate)
|
|
||||||
{
|
{
|
||||||
SpoutFeatures.updateTitle(this, null);
|
powerBoost = null;
|
||||||
SpoutFeatures.updateTitle(null, this);
|
|
||||||
SpoutFeatures.updateCape(this.getPlayer(), null);
|
|
||||||
}
|
}
|
||||||
|
this.powerBoost = powerBoost;
|
||||||
|
this.changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void resetFactionData()
|
public boolean hasPowerBoost()
|
||||||
{
|
{
|
||||||
this.resetFactionData(true);
|
return this.getPowerBoost() != 0D;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
@ -293,7 +388,8 @@ public class FPlayer extends SenderEntity<FPlayer> implements EconomyParticipato
|
|||||||
public String getNameAndSomething(String something)
|
public String getNameAndSomething(String something)
|
||||||
{
|
{
|
||||||
String ret = this.role.getPrefix();
|
String ret = this.role.getPrefix();
|
||||||
if (something.length() > 0) {
|
if (something.length() > 0)
|
||||||
|
{
|
||||||
ret += something+" ";
|
ret += something+" ";
|
||||||
}
|
}
|
||||||
ret += this.getName();
|
ret += this.getName();
|
||||||
@ -302,7 +398,14 @@ public class FPlayer extends SenderEntity<FPlayer> implements EconomyParticipato
|
|||||||
|
|
||||||
public String getNameAndTitle()
|
public String getNameAndTitle()
|
||||||
{
|
{
|
||||||
return this.getNameAndSomething(this.getTitle());
|
if (this.hasTitle())
|
||||||
|
{
|
||||||
|
return this.getNameAndSomething(this.getTitle());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return this.getName();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getNameAndTag()
|
public String getNameAndTag()
|
||||||
|
@ -57,7 +57,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
|||||||
// FIELDS: RAW
|
// FIELDS: RAW
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// In this section of the source code we place the field declarations only.
|
// In this section of the source code we place the field declarations only.
|
||||||
// Each field has it's own section further down since even the getter and setter logic takes up quite some place.
|
// Each field has it's own section further down since just the getter and setter logic takes up quite some place.
|
||||||
|
|
||||||
// TODO: The faction "tag" could/should also have been called "name".
|
// TODO: The faction "tag" could/should also have been called "name".
|
||||||
// The actual faction id looks something like "54947df8-0e9e-4471-a2f9-9af509fb5889" and that is not too easy to remember for humans.
|
// The actual faction id looks something like "54947df8-0e9e-4471-a2f9-9af509fb5889" and that is not too easy to remember for humans.
|
||||||
@ -274,6 +274,11 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
|||||||
this.changed();
|
this.changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasPowerBoost()
|
||||||
|
{
|
||||||
|
return this.getPowerBoost() != 0D;
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// FIELD: cape
|
// FIELD: cape
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
@ -5,4 +5,5 @@ import com.massivecraft.mcore.util.Txt;
|
|||||||
public class Lang
|
public class Lang
|
||||||
{
|
{
|
||||||
public static final String FACTION_NODESCRIPTION = Txt.parse("<em><silver>no description set");
|
public static final String FACTION_NODESCRIPTION = Txt.parse("<em><silver>no description set");
|
||||||
|
public static final String PLAYER_NOTITLE = Txt.parse("<em><silver>no title set");
|
||||||
}
|
}
|
||||||
|
@ -194,7 +194,7 @@ public class SpoutFeatures
|
|||||||
addTag += relationColor.toString() + fplayer.getRole().getPrefix() + faction.getTag();
|
addTag += relationColor.toString() + fplayer.getRole().getPrefix() + faction.getTag();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ConfServer.spoutFactionTitlesOverNames && ! fplayer.getTitle().isEmpty())
|
if (ConfServer.spoutFactionTitlesOverNames && fplayer.hasTitle())
|
||||||
{
|
{
|
||||||
addTag += (addTag.isEmpty() ? "" : " ") + fplayer.getTitle();
|
addTag += (addTag.isEmpty() ? "" : " ") + fplayer.getTitle();
|
||||||
}
|
}
|
||||||
|
@ -227,7 +227,10 @@ public class FactionsChatListener implements Listener
|
|||||||
}
|
}
|
||||||
else if (tag.equals("title"))
|
else if (tag.equals("title"))
|
||||||
{
|
{
|
||||||
ret = fpfrom.getTitle();
|
if (fpfrom.hasTitle())
|
||||||
|
{
|
||||||
|
ret = fpfrom.getTitle();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (tag.equals("tag"))
|
else if (tag.equals("tag"))
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user