From 4286a0c1a015d521509741fc1ba1cb75e1f9363a Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Tue, 7 Oct 2014 12:30:44 +0200 Subject: [PATCH] Some flag tweaks. Use same name scheme as permissions. Also added deposit permission. --- .../factions/cmd/CmdFactionsDisband.java | 2 +- .../factions/cmd/CmdFactionsFaction.java | 8 +- .../factions/cmd/CmdFactionsHome.java | 2 +- .../factions/cmd/CmdFactionsJoin.java | 2 +- .../cmd/CmdFactionsRelationAbstract.java | 4 +- .../massivecraft/factions/entity/Faction.java | 12 +-- .../factions/entity/FactionColl.java | 75 ++++++++++--------- .../massivecraft/factions/entity/MFlag.java | 48 ++++++------ .../massivecraft/factions/entity/MPerm.java | 18 +++-- .../massivecraft/factions/entity/MPlayer.java | 4 +- .../factions/integration/Econ.java | 50 +++++++------ .../listeners/FactionsListenerMain.java | 20 ++--- .../factions/util/RelationUtil.java | 6 +- 13 files changed, 131 insertions(+), 120 deletions(-) diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdFactionsDisband.java b/src/main/java/com/massivecraft/factions/cmd/CmdFactionsDisband.java index b63f18b3..812bd499 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdFactionsDisband.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdFactionsDisband.java @@ -49,7 +49,7 @@ public class CmdFactionsDisband extends FactionsCommand if ( ! MPerm.getPermDisband().has(msender, faction, true)) return; // Verify - if (faction.getFlag(MFlag.getPermanent())) + if (faction.getFlag(MFlag.getFlagPermanent())) { msg("This faction is designated as permanent, so you cannot disband it."); return; diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdFactionsFaction.java b/src/main/java/com/massivecraft/factions/cmd/CmdFactionsFaction.java index eede25ac..8f2df0e1 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdFactionsFaction.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdFactionsFaction.java @@ -78,7 +78,7 @@ public class CmdFactionsFaction extends FactionsCommand // INFO: Open // TODO: Why hardcode displaying the open flag only? We should rather display everything publicly editable. - msg("Open: "+(faction.getFlag(MFlag.getOpen()) ? "Yes, anyone can join" : "No, only invited people can join")); + msg("Open: "+(faction.getFlag(MFlag.getFlagOpen()) ? "Yes, anyone can join" : "No, only invited people can join")); // INFO: Power double powerBoost = faction.getPowerBoost(); @@ -120,12 +120,12 @@ public class CmdFactionsFaction extends FactionsCommand // Display important flags // TODO: Find the non default flags, and display them instead. - if (faction.getFlag(MFlag.getPermanent())) + if (faction.getFlag(MFlag.getFlagPermanent())) { msg("This faction is permanent - remaining even with no followers."); } - if (faction.getFlag(MFlag.getPeaceful())) + if (faction.getFlag(MFlag.getFlagPeaceful())) { msg("This faction is peaceful - in truce with everyone."); } @@ -136,7 +136,7 @@ public class CmdFactionsFaction extends FactionsCommand // List the relations to other factions Map> relationNames = faction.getFactionNamesPerRelation(msender, true); - if (faction.getFlag(MFlag.getPeaceful())) + if (faction.getFlag(MFlag.getFlagPeaceful())) { sendMessage(Txt.parse("In Truce with: *everyone*")); } diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdFactionsHome.java b/src/main/java/com/massivecraft/factions/cmd/CmdFactionsHome.java index 49820bde..a0f76820 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdFactionsHome.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdFactionsHome.java @@ -97,7 +97,7 @@ public class CmdFactionsHome extends FactionsCommandHome ( MConf.get().homesTeleportAllowedEnemyDistance > 0 && - factionHere.getFlag(MFlag.getPvp()) + factionHere.getFlag(MFlag.getFlagPvp()) && ( ! msender.isInOwnTerritory() diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdFactionsJoin.java b/src/main/java/com/massivecraft/factions/cmd/CmdFactionsJoin.java index 6bcf3e92..53bfb19b 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdFactionsJoin.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdFactionsJoin.java @@ -80,7 +80,7 @@ public class CmdFactionsJoin extends FactionsCommand return; } - if( ! (faction.getFlag(MFlag.getOpen()) || faction.isInvited(mplayer) || msender.isUsingAdminMode() || Perm.JOIN_ANY.has(sender, false))) + if( ! (faction.getFlag(MFlag.getFlagOpen()) || faction.isInvited(mplayer) || msender.isUsingAdminMode() || Perm.JOIN_ANY.has(sender, false))) { msg("This faction requires invitation."); if (samePlayer) diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdFactionsRelationAbstract.java b/src/main/java/com/massivecraft/factions/cmd/CmdFactionsRelationAbstract.java index d26697da..ca2a74f5 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdFactionsRelationAbstract.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdFactionsRelationAbstract.java @@ -91,13 +91,13 @@ public abstract class CmdFactionsRelationAbstract extends FactionsCommand // TODO: The ally case should work!! // * this might have to be bumped up to make that happen, & allow ALLY,NEUTRAL only - if ( newRelation != Rel.TRUCE && otherFaction.getFlag(MFlag.getPeaceful())) + if ( newRelation != Rel.TRUCE && otherFaction.getFlag(MFlag.getFlagPeaceful())) { otherFaction.msg("This will have no effect while your faction is peaceful."); msenderFaction.msg("This will have no effect while their faction is peaceful."); } - if ( newRelation != Rel.TRUCE && msenderFaction.getFlag(MFlag.getPeaceful())) + if ( newRelation != Rel.TRUCE && msenderFaction.getFlag(MFlag.getFlagPeaceful())) { otherFaction.msg("This will have no effect while their faction is peaceful."); msenderFaction.msg("This will have no effect while your faction is peaceful."); diff --git a/src/main/java/com/massivecraft/factions/entity/Faction.java b/src/main/java/com/massivecraft/factions/entity/Faction.java index 50e5865e..1baa9873 100644 --- a/src/main/java/com/massivecraft/factions/entity/Faction.java +++ b/src/main/java/com/massivecraft/factions/entity/Faction.java @@ -885,7 +885,7 @@ public class Faction extends Entity implements EconomyParticipator public double getPower() { - if (this.getFlag(MFlag.getInfpower())) return 999999; + if (this.getFlag(MFlag.getFlagInfpower())) return 999999; double ret = 0; for (MPlayer mplayer : this.getMPlayers()) @@ -906,7 +906,7 @@ public class Faction extends Entity implements EconomyParticipator public double getPowerMax() { - if (this.getFlag(MFlag.getInfpower())) return 999999; + if (this.getFlag(MFlag.getFlagInfpower())) return 999999; double ret = 0; for (MPlayer mplayer : this.getMPlayers()) @@ -1065,7 +1065,7 @@ public class Faction extends Entity implements EconomyParticipator public void promoteNewLeader() { if ( ! this.isNormal()) return; - if (this.getFlag(MFlag.getPermanent()) && MConf.get().permanentFactionsDisableLeaderPromotion) return; + if (this.getFlag(MFlag.getFlagPermanent()) && MConf.get().permanentFactionsDisableLeaderPromotion) return; MPlayer oldLeader = this.getLeader(); @@ -1079,7 +1079,7 @@ public class Faction extends Entity implements EconomyParticipator if (replacements == null || replacements.isEmpty()) { // faction leader is the only member; one-man faction - if (this.getFlag(MFlag.getPermanent())) + if (this.getFlag(MFlag.getFlagPermanent())) { if (oldLeader != null) { @@ -1142,8 +1142,8 @@ public class Faction extends Entity implements EconomyParticipator public boolean isExplosionsAllowed() { - boolean explosions = this.getFlag(MFlag.getExplosions()); - boolean offlineexplosions = this.getFlag(MFlag.getOfflineexplosions()); + boolean explosions = this.getFlag(MFlag.getFlagExplosions()); + boolean offlineexplosions = this.getFlag(MFlag.getFlagOfflineexplosions()); boolean online = this.isFactionConsideredOnline(); return (online && explosions) || (!online && offlineexplosions); diff --git a/src/main/java/com/massivecraft/factions/entity/FactionColl.java b/src/main/java/com/massivecraft/factions/entity/FactionColl.java index a49b5e73..4f7e45d4 100644 --- a/src/main/java/com/massivecraft/factions/entity/FactionColl.java +++ b/src/main/java/com/massivecraft/factions/entity/FactionColl.java @@ -92,24 +92,25 @@ public class FactionColl extends Coll faction.setName(ChatColor.DARK_GREEN+"Wilderness"); faction.setDescription(null); - faction.setFlag(MFlag.getOpen(), false); - faction.setFlag(MFlag.getPermanent(), true); - faction.setFlag(MFlag.getPeaceful(), false); - faction.setFlag(MFlag.getInfpower(), true); - faction.setFlag(MFlag.getPowerloss(), true); - faction.setFlag(MFlag.getPvp(), true); - faction.setFlag(MFlag.getFriendlyire(), false); - faction.setFlag(MFlag.getMonsters(), true); - faction.setFlag(MFlag.getExplosions(), true); - faction.setFlag(MFlag.getOfflineexplosions(), true); - faction.setFlag(MFlag.getFirespread(), true); - faction.setFlag(MFlag.getEndergrief(), true); + faction.setFlag(MFlag.getFlagOpen(), false); + faction.setFlag(MFlag.getFlagPermanent(), true); + faction.setFlag(MFlag.getFlagPeaceful(), false); + faction.setFlag(MFlag.getFlagInfpower(), true); + faction.setFlag(MFlag.getFlagPowerloss(), true); + faction.setFlag(MFlag.getFlagPvp(), true); + faction.setFlag(MFlag.getFlagFriendlyire(), false); + faction.setFlag(MFlag.getFlagMonsters(), true); + faction.setFlag(MFlag.getFlagExplosions(), true); + faction.setFlag(MFlag.getFlagOfflineexplosions(), true); + faction.setFlag(MFlag.getFlagFirespread(), true); + faction.setFlag(MFlag.getFlagEndergrief(), true); faction.setPermittedRelations(MPerm.getPermBuild(), Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY, Rel.TRUCE, Rel.NEUTRAL, Rel.ENEMY); faction.setPermittedRelations(MPerm.getPermDoor(), Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY, Rel.TRUCE, Rel.NEUTRAL, Rel.ENEMY); faction.setPermittedRelations(MPerm.getPermContainer(), Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY, Rel.TRUCE, Rel.NEUTRAL, Rel.ENEMY); faction.setPermittedRelations(MPerm.getPermButton(), Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY, Rel.TRUCE, Rel.NEUTRAL, Rel.ENEMY); faction.setPermittedRelations(MPerm.getPermLever(), Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY, Rel.TRUCE, Rel.NEUTRAL, Rel.ENEMY); + faction.setPermittedRelations(MPerm.getPermDeposit(), Rel.LEADER, Rel.OFFICER); // Wilderness deposit should be limited as an anti spam meassure. return faction; } @@ -125,18 +126,18 @@ public class FactionColl extends Coll faction.setName("SafeZone"); faction.setDescription("Free from PVP and monsters"); - faction.setFlag(MFlag.getOpen(), false); - faction.setFlag(MFlag.getPermanent(), true); - faction.setFlag(MFlag.getPeaceful(), true); - faction.setFlag(MFlag.getInfpower(), true); - faction.setFlag(MFlag.getPowerloss(), false); - faction.setFlag(MFlag.getPvp(), false); - faction.setFlag(MFlag.getFriendlyire(), false); - faction.setFlag(MFlag.getMonsters(), false); - faction.setFlag(MFlag.getExplosions(), false); - faction.setFlag(MFlag.getOfflineexplosions(), false); - faction.setFlag(MFlag.getFirespread(), false); - faction.setFlag(MFlag.getEndergrief(), false); + faction.setFlag(MFlag.getFlagOpen(), false); + faction.setFlag(MFlag.getFlagPermanent(), true); + faction.setFlag(MFlag.getFlagPeaceful(), true); + faction.setFlag(MFlag.getFlagInfpower(), true); + faction.setFlag(MFlag.getFlagPowerloss(), false); + faction.setFlag(MFlag.getFlagPvp(), false); + faction.setFlag(MFlag.getFlagFriendlyire(), false); + faction.setFlag(MFlag.getFlagMonsters(), false); + faction.setFlag(MFlag.getFlagExplosions(), false); + faction.setFlag(MFlag.getFlagOfflineexplosions(), false); + faction.setFlag(MFlag.getFlagFirespread(), false); + faction.setFlag(MFlag.getFlagEndergrief(), false); faction.setPermittedRelations(MPerm.getPermDoor(), Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY, Rel.TRUCE, Rel.NEUTRAL, Rel.ENEMY); faction.setPermittedRelations(MPerm.getPermContainer(), Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY, Rel.TRUCE, Rel.NEUTRAL, Rel.ENEMY); @@ -158,18 +159,18 @@ public class FactionColl extends Coll faction.setName("WarZone"); faction.setDescription("Not the safest place to be"); - faction.setFlag(MFlag.getOpen(), false); - faction.setFlag(MFlag.getPermanent(), true); - faction.setFlag(MFlag.getPeaceful(), true); - faction.setFlag(MFlag.getInfpower(), true); - faction.setFlag(MFlag.getPowerloss(), true); - faction.setFlag(MFlag.getPvp(), true); - faction.setFlag(MFlag.getFriendlyire(), true); - faction.setFlag(MFlag.getMonsters(), true); - faction.setFlag(MFlag.getExplosions(), true); - faction.setFlag(MFlag.getOfflineexplosions(), true); - faction.setFlag(MFlag.getFirespread(), true); - faction.setFlag(MFlag.getEndergrief(), true); + faction.setFlag(MFlag.getFlagOpen(), false); + faction.setFlag(MFlag.getFlagPermanent(), true); + faction.setFlag(MFlag.getFlagPeaceful(), true); + faction.setFlag(MFlag.getFlagInfpower(), true); + faction.setFlag(MFlag.getFlagPowerloss(), true); + faction.setFlag(MFlag.getFlagPvp(), true); + faction.setFlag(MFlag.getFlagFriendlyire(), true); + faction.setFlag(MFlag.getFlagMonsters(), true); + faction.setFlag(MFlag.getFlagExplosions(), true); + faction.setFlag(MFlag.getFlagOfflineexplosions(), true); + faction.setFlag(MFlag.getFlagFirespread(), true); + faction.setFlag(MFlag.getFlagEndergrief(), true); faction.setPermittedRelations(MPerm.getPermDoor(), Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY, Rel.TRUCE, Rel.NEUTRAL, Rel.ENEMY); faction.setPermittedRelations(MPerm.getPermContainer(), Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY, Rel.TRUCE, Rel.NEUTRAL, Rel.ENEMY); @@ -195,7 +196,7 @@ public class FactionColl extends Coll for (Faction faction : this.getAll()) { int landCount = faction.getLandCount(); - if (!faction.getFlag(MFlag.getPeaceful()) && landCount > 0) + if (!faction.getFlag(MFlag.getFlagPeaceful()) && landCount > 0) { List players = faction.getMPlayers(); int playerCount = players.size(); diff --git a/src/main/java/com/massivecraft/factions/entity/MFlag.java b/src/main/java/com/massivecraft/factions/entity/MFlag.java index 116afada..1ae90400 100644 --- a/src/main/java/com/massivecraft/factions/entity/MFlag.java +++ b/src/main/java/com/massivecraft/factions/entity/MFlag.java @@ -56,32 +56,32 @@ public class MFlag extends Entity implements Prioritized, Registerable public static void setupStandardFlags() { - getOpen(); - getMonsters(); - getPowerloss(); - getPvp(); - getFriendlyire(); - getExplosions(); - getOfflineexplosions(); - getFirespread(); - getEndergrief(); - getPermanent(); - getPeaceful(); - getInfpower(); + getFlagOpen(); + getFlagMonsters(); + getFlagPowerloss(); + getFlagPvp(); + getFlagFriendlyire(); + getFlagExplosions(); + getFlagOfflineexplosions(); + getFlagFirespread(); + getFlagEndergrief(); + getFlagPermanent(); + getFlagPeaceful(); + getFlagInfpower(); } - public static MFlag getOpen() { return getCreative(PRIORITY_OPEN, ID_OPEN, ID_OPEN, "Open factions can be joined without invite.", false, true, true); } - public static MFlag getMonsters() { return getCreative(PRIORITY_MONSTERS, ID_MONSTERS, ID_MONSTERS, "Can monsters spawn in this territory?", false, true, true); } - public static MFlag getPowerloss() { return getCreative(PRIORITY_POWERLOSS, ID_POWERLOSS, ID_POWERLOSS, "Is power lost on death in this territory?", true, false, true); } - public static MFlag getPvp() { return getCreative(PRIORITY_PVP, ID_PVP, ID_PVP, "Can you PVP in territory?", true, false, true); } - public static MFlag getFriendlyire() { return getCreative(PRIORITY_FRIENDLYFIRE, ID_FRIENDLYFIRE, ID_FRIENDLYFIRE, "Can friends hurt eachother here?", false, false, true); } - public static MFlag getExplosions() { return getCreative(PRIORITY_EXPLOSIONS, ID_EXPLOSIONS, ID_EXPLOSIONS, "Can explosions occur in this territory?", true, false, true); } - public static MFlag getOfflineexplosions() { return getCreative(PRIORITY_OFFLINEEXPLOSIONS, ID_OFFLINEEXPLOSIONS, ID_OFFLINEEXPLOSIONS, "Can explosions occur if faction is offline?", false, false, true); } - public static MFlag getFirespread() { return getCreative(PRIORITY_FIRESPREAD, ID_FIRESPREAD, ID_FIRESPREAD, "Can fire spread in territory?", true, false, true); } - public static MFlag getEndergrief() { return getCreative(PRIORITY_ENDERGRIEF, ID_ENDERGRIEF, ID_ENDERGRIEF, "Can endermen grief in this territory?", false, false, true); } - public static MFlag getPermanent() { return getCreative(PRIORITY_PERMANENT, ID_PERMANENT, ID_PERMANENT, "A permanent faction will never be deleted.", false, false, true); } - public static MFlag getPeaceful() { return getCreative(PRIORITY_PEACEFUL, ID_PEACEFUL, ID_PEACEFUL, "Always in truce with other factions.", false, false, true); } - public static MFlag getInfpower() { return getCreative(PRIORITY_INFPOWER, ID_INFPOWER, ID_INFPOWER, "This flag gives the faction infinite power.", false, false, true); } + public static MFlag getFlagOpen() { return getCreative(PRIORITY_OPEN, ID_OPEN, ID_OPEN, "Open factions can be joined without invite.", false, true, true); } + public static MFlag getFlagMonsters() { return getCreative(PRIORITY_MONSTERS, ID_MONSTERS, ID_MONSTERS, "Can monsters spawn in this territory?", false, true, true); } + public static MFlag getFlagPowerloss() { return getCreative(PRIORITY_POWERLOSS, ID_POWERLOSS, ID_POWERLOSS, "Is power lost on death in this territory?", true, false, true); } + public static MFlag getFlagPvp() { return getCreative(PRIORITY_PVP, ID_PVP, ID_PVP, "Can you PVP in territory?", true, false, true); } + public static MFlag getFlagFriendlyire() { return getCreative(PRIORITY_FRIENDLYFIRE, ID_FRIENDLYFIRE, ID_FRIENDLYFIRE, "Can friends hurt eachother here?", false, false, true); } + public static MFlag getFlagExplosions() { return getCreative(PRIORITY_EXPLOSIONS, ID_EXPLOSIONS, ID_EXPLOSIONS, "Can explosions occur in this territory?", true, false, true); } + public static MFlag getFlagOfflineexplosions() { return getCreative(PRIORITY_OFFLINEEXPLOSIONS, ID_OFFLINEEXPLOSIONS, ID_OFFLINEEXPLOSIONS, "Can explosions occur if faction is offline?", false, false, true); } + public static MFlag getFlagFirespread() { return getCreative(PRIORITY_FIRESPREAD, ID_FIRESPREAD, ID_FIRESPREAD, "Can fire spread in territory?", true, false, true); } + public static MFlag getFlagEndergrief() { return getCreative(PRIORITY_ENDERGRIEF, ID_ENDERGRIEF, ID_ENDERGRIEF, "Can endermen grief in this territory?", false, false, true); } + public static MFlag getFlagPermanent() { return getCreative(PRIORITY_PERMANENT, ID_PERMANENT, ID_PERMANENT, "A permanent faction will never be deleted.", false, false, true); } + public static MFlag getFlagPeaceful() { return getCreative(PRIORITY_PEACEFUL, ID_PEACEFUL, ID_PEACEFUL, "Always in truce with other factions.", false, false, true); } + public static MFlag getFlagInfpower() { return getCreative(PRIORITY_INFPOWER, ID_INFPOWER, ID_INFPOWER, "This flag gives the faction infinite power.", false, false, true); } public static MFlag getCreative(int priority, String id, String name, String desc, boolean standard, boolean editable, boolean visible) { diff --git a/src/main/java/com/massivecraft/factions/entity/MPerm.java b/src/main/java/com/massivecraft/factions/entity/MPerm.java index 1f156ec9..17778bc7 100644 --- a/src/main/java/com/massivecraft/factions/entity/MPerm.java +++ b/src/main/java/com/massivecraft/factions/entity/MPerm.java @@ -39,6 +39,7 @@ public class MPerm extends Entity implements Prioritized, Registerable public final static transient String ID_TITLE = "title"; public final static transient String ID_HOME = "home"; public final static transient String ID_SETHOME = "sethome"; + public final static transient String ID_DEPOSIT = "deposit"; public final static transient String ID_WITHDRAW = "withdraw"; public final static transient String ID_TERRITORY = "territory"; public final static transient String ID_ACCESS = "access"; @@ -62,13 +63,14 @@ public class MPerm extends Entity implements Prioritized, Registerable public final static transient int PRIORITY_TITLE = 12000; public final static transient int PRIORITY_HOME = 13000; public final static transient int PRIORITY_SETHOME = 14000; - public final static transient int PRIORITY_WITHDRAW = 15000; - public final static transient int PRIORITY_TERRITORY = 16000; - public final static transient int PRIORITY_ACCESS = 17000; - public final static transient int PRIORITY_REL = 18000; - public final static transient int PRIORITY_DISBAND = 19000; - public final static transient int PRIORITY_FLAGS = 20000; - public final static transient int PRIORITY_PERMS = 21000; + public final static transient int PRIORITY_DEPOSIT = 15000; + public final static transient int PRIORITY_WITHDRAW = 16000; + public final static transient int PRIORITY_TERRITORY = 17000; + public final static transient int PRIORITY_ACCESS = 18000; + public final static transient int PRIORITY_REL = 19000; + public final static transient int PRIORITY_DISBAND = 20000; + public final static transient int PRIORITY_FLAGS = 21000; + public final static transient int PRIORITY_PERMS = 22000; // -------------------------------------------- // // META: CORE @@ -101,6 +103,7 @@ public class MPerm extends Entity implements Prioritized, Registerable getPermTitle(); getPermHome(); getPermSethome(); + getPermDeposit(); getPermWithdraw(); getPermTerritory(); getPermAccess(); @@ -125,6 +128,7 @@ public class MPerm extends Entity implements Prioritized, Registerable public static MPerm getPermTitle() { return getCreative(PRIORITY_TITLE, ID_TITLE, ID_TITLE, "set titles", MUtil.set(Rel.LEADER, Rel.OFFICER), false, true, true); } public static MPerm getPermHome() { return getCreative(PRIORITY_HOME, ID_HOME, ID_HOME, "teleport home", MUtil.set(Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY), false, true, true); } public static MPerm getPermSethome() { return getCreative(PRIORITY_SETHOME, ID_SETHOME, ID_SETHOME, "set the home", MUtil.set(Rel.LEADER, Rel.OFFICER), false, true, true); } + public static MPerm getPermDeposit() { return getCreative(PRIORITY_DEPOSIT, ID_DEPOSIT, ID_DEPOSIT, "deposit money", MUtil.set(Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY), false, false, false); } // non editable, non visible. public static MPerm getPermWithdraw() { return getCreative(PRIORITY_WITHDRAW, ID_WITHDRAW, ID_WITHDRAW, "withdraw money", MUtil.set(Rel.LEADER, Rel.OFFICER), false, true, true); } public static MPerm getPermTerritory() { return getCreative(PRIORITY_TERRITORY, ID_TERRITORY, ID_TERRITORY, "claim or unclaim", MUtil.set(Rel.LEADER, Rel.OFFICER), false, true, true); } public static MPerm getPermAccess() { return getCreative(PRIORITY_ACCESS, ID_ACCESS, ID_ACCESS, "grant territory", MUtil.set(Rel.LEADER, Rel.OFFICER), false, true, true); } diff --git a/src/main/java/com/massivecraft/factions/entity/MPlayer.java b/src/main/java/com/massivecraft/factions/entity/MPlayer.java index 0939d825..ba3858da 100644 --- a/src/main/java/com/massivecraft/factions/entity/MPlayer.java +++ b/src/main/java/com/massivecraft/factions/entity/MPlayer.java @@ -734,7 +734,7 @@ public class MPlayer extends SenderEntity implements EconomyParticipato { Faction myFaction = this.getFaction(); - boolean permanent = myFaction.getFlag(MFlag.getPermanent()); + boolean permanent = myFaction.getFlag(MFlag.getFlagPermanent()); if (myFaction.getMPlayers().size() > 1) { @@ -824,7 +824,7 @@ public class MPlayer extends SenderEntity implements EconomyParticipato int ownedLand = newFaction.getLandCount(); - if (mconf.claimedLandsMax != 0 && ownedLand >= mconf.claimedLandsMax && ! newFaction.getFlag(MFlag.getInfpower())) + if (mconf.claimedLandsMax != 0 && ownedLand >= mconf.claimedLandsMax && ! newFaction.getFlag(MFlag.getFlagInfpower())) { msg("Limit reached. You can't claim more land."); return false; diff --git a/src/main/java/com/massivecraft/factions/integration/Econ.java b/src/main/java/com/massivecraft/factions/integration/Econ.java index 810c8088..8ff95b01 100644 --- a/src/main/java/com/massivecraft/factions/integration/Econ.java +++ b/src/main/java/com/massivecraft/factions/integration/Econ.java @@ -51,12 +51,12 @@ public class Econ public static void modifyUniverseMoney(Object universe, double delta) { - if (!isEnabled()) return; + if ( ! isEnabled()) return; if (MConf.get().econUniverseAccount == null) return; if (MConf.get().econUniverseAccount.length() == 0) return; - if (!Money.exists(MConf.get().econUniverseAccount)) return; + if ( ! Money.exists(MConf.get().econUniverseAccount)) return; Money.spawn(MConf.get().econUniverseAccount, null, delta); } @@ -66,30 +66,30 @@ public class Econ to.msg("%s's balance is %s.", about.describeTo(to, true), Money.format(Money.get(about))); } - public static boolean canIControllYou(EconomyParticipator i, EconomyParticipator you) + public static boolean isMePermittedYou(EconomyParticipator me, EconomyParticipator you, MPerm mperm) { - Faction fI = RelationUtil.getFaction(i); + // Null means special system invocation and is always to be accepted. + if (me == null) return true; + + // Always accept when in admin mode. + if (me instanceof MPlayer && ((MPlayer)me).isUsingAdminMode()) return true; + + // Always accept control of self + if (me == you) return true; + + Faction fMe = RelationUtil.getFaction(me); Faction fYou = RelationUtil.getFaction(you); - // This is a system invoker. Accept it. - if (fI == null) return true; - - // Bypassing players can do any kind of transaction - if (i instanceof MPlayer && ((MPlayer)i).isUsingAdminMode()) return true; - - // You can deposit to anywhere you feel like. It's your loss if you can't withdraw it again. - if (i == you) return true; - // A faction can always transfer away the money of it's members and its own money... // This will however probably never happen as a faction does not have free will. // Ohh by the way... Yes it could. For daily rent to the faction. - if (i == fI && fI == fYou) return true; + if (me == fMe && fMe == fYou) return true; // Factions can be controlled by those that have permissions if (you instanceof Faction) { - if (i instanceof Faction && MPerm.getPermWithdraw().has((Faction)i, fYou)) return true; - if (i instanceof MPlayer && MPerm.getPermWithdraw().has((MPlayer)i, fYou, false)) return true; + if (me instanceof Faction && mperm.has((Faction)me, fYou)) return true; + if (me instanceof MPlayer && mperm.has((MPlayer)me, fYou, false)) return true; } // Otherwise you may not! ;,,; @@ -102,7 +102,7 @@ public class Econ } public static boolean transferMoney(EconomyParticipator from, EconomyParticipator to, EconomyParticipator by, double amount, boolean notify) { - if (!isEnabled()) return false; + if ( ! isEnabled()) return false; // The amount must be positive. // If the amount is negative we must flip and multiply amount with -1. @@ -114,10 +114,16 @@ public class Econ to = temp; } - // Check the rights - if ( ! canIControllYou(by, from)) + // Check Permissions + if ( ! isMePermittedYou(by, from, MPerm.getPermWithdraw())) { - by.msg("%s lacks permission to control %s's money.", by.describeTo(by, true), from.describeTo(by)); + by.msg("%s lack permission to withdraw money from %s's.", by.describeTo(by, true), from.describeTo(by)); + return false; + } + + if ( ! isMePermittedYou(by, to, MPerm.getPermDeposit())) + { + by.msg("%s lack permission to deposit money to %s's.", by.describeTo(by, true), to.describeTo(by)); return false; } @@ -211,7 +217,7 @@ public class Econ public static boolean hasAtLeast(EconomyParticipator ep, double delta, String toDoThis) { - if (!isEnabled()) return true; + if ( ! isEnabled()) return true; if (Money.get(ep) < delta) { @@ -226,7 +232,7 @@ public class Econ public static boolean modifyMoney(EconomyParticipator ep, double delta, String actionDescription) { - if (!isEnabled()) return false; + if ( ! isEnabled()) return false; if (delta == 0) return true; String You = ep.describeTo(ep, true); diff --git a/src/main/java/com/massivecraft/factions/listeners/FactionsListenerMain.java b/src/main/java/com/massivecraft/factions/listeners/FactionsListenerMain.java index 45f717fb..34fbc0da 100644 --- a/src/main/java/com/massivecraft/factions/listeners/FactionsListenerMain.java +++ b/src/main/java/com/massivecraft/factions/listeners/FactionsListenerMain.java @@ -327,7 +327,7 @@ public class FactionsListenerMain implements Listener // ... and powerloss can happen here ... Faction faction = BoardColl.get().getFactionAt(PS.valueOf(player)); - if (!faction.getFlag(MFlag.getPowerloss())) + if (!faction.getFlag(MFlag.getFlagPowerloss())) { mplayer.msg("You didn't lose any power since the territory you died in works that way."); return; @@ -430,7 +430,7 @@ public class FactionsListenerMain implements Listener Faction defenderPsFaction = BoardColl.get().getFactionAt(defenderPs); // ... PVP flag may cause a damage block ... - if (defenderPsFaction.getFlag(MFlag.getPvp()) == false) + if (defenderPsFaction.getFlag(MFlag.getFlagPvp()) == false) { if (eattacker == null) { @@ -448,7 +448,7 @@ public class FactionsListenerMain implements Listener } return ret; } - return defenderPsFaction.getFlag(MFlag.getMonsters()); + return defenderPsFaction.getFlag(MFlag.getFlagMonsters()); } // ... and if the attacker is a player ... @@ -466,7 +466,7 @@ public class FactionsListenerMain implements Listener // ... PVP flag may cause a damage block ... // (just checking the defender as above isn't enough. What about the attacker? It could be in a no-pvp area) // NOTE: This check is probably not that important but we could keep it anyways. - if (attackerPsFaction.getFlag(MFlag.getPvp()) == false) + if (attackerPsFaction.getFlag(MFlag.getFlagPvp()) == false) { ret = falseUnlessDisallowedPvpEventCancelled(attacker, defender, event); if (!ret && notify) uattacker.msg("PVP is disabled in %s.", attackerPsFaction.describeTo(uattacker)); @@ -503,7 +503,7 @@ public class FactionsListenerMain implements Listener Rel relation = defendFaction.getRelationTo(attackFaction); // Check the relation - if (udefender.hasFaction() && relation.isFriend() && defenderPsFaction.getFlag(MFlag.getFriendlyire()) == false) + if (udefender.hasFaction() && relation.isFriend() && defenderPsFaction.getFlag(MFlag.getFlagFriendlyire()) == false) { ret = falseUnlessDisallowedPvpEventCancelled(attacker, defender, event); if (!ret && notify) uattacker.msg("You can't hurt %s.", relation.getDescPlayerMany()); @@ -606,7 +606,7 @@ public class FactionsListenerMain implements Listener command = command.trim(); // ... the command may be denied for members of permanent factions ... - if (mplayer.hasFaction() && mplayer.getFaction().getFlag(MFlag.getPermanent()) && containsCommand(command, MConf.get().denyCommandsPermanentFactionMember)) + if (mplayer.hasFaction() && mplayer.getFaction().getFlag(MFlag.getFlagPermanent()) && containsCommand(command, MConf.get().denyCommandsPermanentFactionMember)) { mplayer.msg("You can't use \"/%s\" as member of a permanent faction.", command); event.setCancelled(true); @@ -673,7 +673,7 @@ public class FactionsListenerMain implements Listener Faction faction = BoardColl.get().getFactionAt(ps); if (faction == null) return; - if (faction.getFlag(MFlag.getMonsters())) return; + if (faction.getFlag(MFlag.getFlagMonsters())) return; // ... block the spawn. event.setCancelled(true); @@ -692,7 +692,7 @@ public class FactionsListenerMain implements Listener // ... at a place where monsters are forbidden ... PS ps = PS.valueOf(target); Faction faction = BoardColl.get().getFactionAt(ps); - if (faction.getFlag(MFlag.getMonsters())) return; + if (faction.getFlag(MFlag.getFlagMonsters())) return; // ... then if ghast target nothing ... if (event.getEntityType() == EntityType.GHAST) @@ -796,7 +796,7 @@ public class FactionsListenerMain implements Listener // ... and the faction there has endergrief disabled ... PS ps = PS.valueOf(event.getBlock()); Faction faction = BoardColl.get().getFactionAt(ps); - if (faction.getFlag(MFlag.getEndergrief())) return; + if (faction.getFlag(MFlag.getFlagEndergrief())) return; // ... stop the block alteration. event.setCancelled(true); @@ -812,7 +812,7 @@ public class FactionsListenerMain implements Listener PS ps = PS.valueOf(block); Faction faction = BoardColl.get().getFactionAt(ps); - if (faction.getFlag(MFlag.getFirespread())) return; + if (faction.getFlag(MFlag.getFlagFirespread())) return; // then cancel the event. cancellable.setCancelled(true); diff --git a/src/main/java/com/massivecraft/factions/util/RelationUtil.java b/src/main/java/com/massivecraft/factions/util/RelationUtil.java index 13f10983..13f17b71 100644 --- a/src/main/java/com/massivecraft/factions/util/RelationUtil.java +++ b/src/main/java/com/massivecraft/factions/util/RelationUtil.java @@ -108,7 +108,7 @@ public class RelationUtil //P.p.log("getRelationOfThatToMe it was a player and role is "+ret); } } - else if (!ignorePeaceful && (thatFaction.getFlag(MFlag.getPeaceful()) || myFaction.getFlag(MFlag.getPeaceful()))) + else if (!ignorePeaceful && (thatFaction.getFlag(MFlag.getFlagPeaceful()) || myFaction.getFlag(MFlag.getFlagPeaceful()))) { ret = Rel.TRUCE; } @@ -137,12 +137,12 @@ public class RelationUtil Faction thatFaction = getFaction(that); if (thatFaction != null && thatFaction != getFaction(me)) { - if (thatFaction.getFlag(MFlag.getFriendlyire()) == true) + if (thatFaction.getFlag(MFlag.getFlagFriendlyire()) == true) { return MConf.get().colorFriendlyFire; } - if (thatFaction.getFlag(MFlag.getPvp()) == false) + if (thatFaction.getFlag(MFlag.getFlagPvp()) == false) { return MConf.get().colorNoPVP; }