The recruit role's goal is to enable factions to invite new members without being afraid of getting griefed instantly.
Adds a configuration option "factionRankDefault" for default rank of newly joined faction members. By default this is RECRUIT, but it can be set to any supported rank.
Adds the /f promote and /f demote commands, which leaders and officers can use to increase or decrease the rank of a faction member by one level, up to officer, or down to recruit.
This version of the recruit feature preserves the /f officer command for backward compatibility.
Added Econ.hasAtLeast(EconomyParticipator ep, double delta, String toDoThis) method to check if an account has at least a specified amount of money in it. Also added related FCommand.canAffordCommand(double cost, String toDoThis).
Patrick's Custom Event System Changes:
----------------------------------------
* FPlayerLeaveEvent now fires for all faction players in cmdDisband()
* FPlayerLeaveEvent removed from cmdJoin()
* FPlayerJoinEvent now only fires when the faction is different in cmdLeade
* Added FactionRenameEvent, firing on cmdTag()
* Added FactionRelationEvent, firing on FRelationCommand extensions
* Fixed FPlayerJoinEvent to fire after tag is set in cmdCreate()
* Added getFactionId() to FactionCreateEvent
TODO:
-------
* cmdLeader() might need a FPlayerLeaveEvent for the same reason it needs
a FPlayerJoinEvent?
On branch CustomFactionEvents
modified: src/com/massivecraft/factions/cmd/CmdCreate.java
modified: src/com/massivecraft/factions/cmd/CmdDisband.java
modified: src/com/massivecraft/factions/cmd/CmdJoin.java
modified: src/com/massivecraft/factions/cmd/CmdKick.java
modified: src/com/massivecraft/factions/cmd/CmdLeader.java
modified: src/com/massivecraft/factions/cmd/CmdTag.java
modified: src/com/massivecraft/factions/cmd/FRelationCommand.java
modified: src/com/massivecraft/factions/event/FPlayerLeaveEvent.java
modified: src/com/massivecraft/factions/event/FactionCreateEvent.java
new file: src/com/massivecraft/factions/event/FactionRelationEvent.java
new file: src/com/massivecraft/factions/event/FactionRenameEvent.java
modified: src/com/massivecraft/factions/event/LandClaimEvent.java
Note that the player cannot currently already be in another faction; if they are, you'll need to /f kick them first. Also note that if the faction isn't open (with no invitation required), the player isn't invited, and you don't have the factions.join.any permission or have admin bypass mode on, the attempt will also fail.
Also, added new log method which accepts arguments (like the msg method).
Also, a couple more minor bugfixes are included for /f home payment giving the wrong message, player/faction descriptions being wrong for console messages, and potential NPE in new faction leader promotion routine if faction was permanent with no current leader.
New permissions:
factions.leader.any - allows use of /f leader on any player in any faction
factions officer.any - allows use of /f officer on any player in any faction
factions.join.any - allows player to join any faction, bypassing invitation process for closed factions (the same as players with /f bypass enabled can do)
"logFactionCreate": true, - log faction creation
"logFactionDisband": true, - log factions being disbanded, by command or by circumstance
"logFactionJoin": true, - log player joining a faction
"logFactionKick": true, - log player being kicked from a faction
"logFactionLeave": true, - log player leaving a faction
"logLandClaims": true, - log land being claimed (including safe zone and war zone)
"logLandUnclaims": true, - log land being unclaimed (including safe zone and war zone)
"logMoneyTransactions": true, - log money being deposited, withdrawn, and otherwise transferred in relation to faction banks
Also a fix for a potential NPE from players logging out and Spout appearance handler referencing them afterwards
Existing users should run these commands to add it to an existing config, if desired:
/f config territoryProtectedMaterials FENCE_GATE
/f config territoryProtectedMaterialsWhenOffline FENCE_GATE
Also changed first letter of "canLeaveWithNegativePower" setting to lowercase, to fit with Java standards. If you had previously changed this setting to false, you'll need to do so again.