New setting "radiusClaimFailureLimit" (default 9). If claims are unsuccessful that many times in a row during a radius claim, the task will cancel out. There is no longer a limit to the specified radius since the process should no longer cause major server stress, and due to the process canceling out after several failures as just described.
Added some new methods to FLocation to quickly convert between block/chunk/region positions, and rewrote the FLocation hashCode() method to make it faster.
As with every other setting, you are advised to use /f config to modify it. Example: /f config playersWhoBypassAllProtection fakePluginPlayerName - add/remove the specified player name
Also switched several HashSets in Conf.java to LinkedHashSets. LinkedHashSets do have slower insertion and deletion than HashSets, but importantly they have faster lookup speed (at least until you get up to several hundred entries).
Changes:
----------
* changed internal storage of faction from String Id to Faction for LandClaimEvent and LandUnclaimEvent
* added getFactionId(), getFactionTag(), getPlayer() to LandClaimEvent
* added getFactionId(), getFactionTag(), getFPlayer(), getPlayer() to LandUnclaimEvent
* removed LandUnclaimEvent from unclaimAll() in Board.java
* created LandUnclaimAllEvent (uncancellable) and hooked into cmdUnclaimall
Notes:
--------
* LandUnclaimAllEvent currently only returns calling faction and fplayer information. Location data is unavailable as it is determined in Board.java's unclaimAll(). Realistically this should be enough information for anyone hooking this event to determine what is being altered.
On branch CustomFactionEvents
modified: src/com/massivecraft/factions/Board.java
modified: src/com/massivecraft/factions/FPlayer.java
modified: src/com/massivecraft/factions/cmd/CmdUnclaim.java
modified: src/com/massivecraft/factions/cmd/CmdUnclaimall.java
modified: src/com/massivecraft/factions/event/LandClaimEvent.java
new file: src/com/massivecraft/factions/event/LandUnclaimAllEvent.java
modified: src/com/massivecraft/factions/event/LandUnclaimEvent.java
Examples:
/f config factionFlagDefaults firespread false - set default "FIRESPREAD" faction flag to false
/f config factionFlagDefaults monsters true - set default "MONSTERS" faction flag to true
/f config factionPermDefaults build ally - for default "BUILD" faction permission, add/remove permission for allies
/f config factionPermDefaults withdraw member - for default "WITHDRAW" faction permission, add/remove permission for regular faction members
(Brettflan) Fixed slashless commands not being logged if player was in faction chat or alliance chat mode. Also cleaned up chat code a bit, nothing major.
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).
When chat event hits an UnknownFormatConversionException which requires better chat configuration, the quick dirty fix of setting chatTagInsertIndex to 0 is now automatically applied.