Merge pull request #2 from MassiveCraft/master
Step 1 in many removing the universe system. Untested and lacking auto c...
This commit is contained in:
commit
3bac7390f7
@ -8,9 +8,7 @@ public class Const
|
||||
|
||||
public static final String COLLECTION_BOARD = BASENAME_+"board";
|
||||
public static final String COLLECTION_FACTION = BASENAME_+"faction";
|
||||
public static final String COLLECTION_UPLAYER = BASENAME_+"uplayer";
|
||||
public static final String COLLECTION_MPLAYER = BASENAME_+"mplayer";
|
||||
public static final String COLLECTION_UCONF = BASENAME_+"uconf";
|
||||
public static final String COLLECTION_MCONF = BASENAME_+"mconf";
|
||||
|
||||
public static final String ASPECT = BASENAME;
|
||||
|
@ -1,125 +0,0 @@
|
||||
package com.massivecraft.factions;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import com.massivecraft.factions.entity.Board;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.BoardColls;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.factions.entity.FactionColls;
|
||||
import com.massivecraft.factions.entity.MPlayerColl;
|
||||
import com.massivecraft.factions.entity.UPlayerColl;
|
||||
import com.massivecraft.factions.entity.UPlayerColls;
|
||||
import com.massivecraft.massivecore.EngineAbstract;
|
||||
import com.massivecraft.massivecore.event.EventMassiveCoreUuidUpdate;
|
||||
import com.massivecraft.massivecore.util.IdUpdateUtil;
|
||||
import com.massivecraft.massivecore.util.MUtil;
|
||||
|
||||
public class EngineIdUpdate extends EngineAbstract
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
private static EngineIdUpdate i = new EngineIdUpdate();
|
||||
public static EngineIdUpdate get() { return i; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public Plugin getPlugin()
|
||||
{
|
||||
return Factions.get();
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// LISTENER
|
||||
// -------------------------------------------- //
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void update(EventMassiveCoreUuidUpdate event)
|
||||
{
|
||||
for (FactionColl coll : FactionColls.get().getColls())
|
||||
{
|
||||
for (Faction entity : coll.getAll())
|
||||
{
|
||||
update(coll, entity);
|
||||
}
|
||||
}
|
||||
|
||||
IdUpdateUtil.update(MPlayerColl.get());
|
||||
|
||||
for (UPlayerColl coll : UPlayerColls.get().getColls())
|
||||
{
|
||||
IdUpdateUtil.update(coll);
|
||||
}
|
||||
|
||||
for (BoardColl coll : BoardColls.get().getColls())
|
||||
{
|
||||
update(coll);
|
||||
}
|
||||
}
|
||||
|
||||
public static void update(FactionColl coll, Faction entity)
|
||||
{
|
||||
// Before and After
|
||||
Set<String> before = entity.getInvitedPlayerIds();
|
||||
if (before == null) return;
|
||||
Set<String> after = IdUpdateUtil.update(before, true);
|
||||
if (after == null) return;
|
||||
|
||||
// NoChange
|
||||
if (MUtil.equals(before, after)) return;
|
||||
|
||||
// Apply
|
||||
entity.setInvitedPlayerIds(after);
|
||||
entity.sync();
|
||||
}
|
||||
|
||||
public static void update(BoardColl coll)
|
||||
{
|
||||
for (Board board : coll.getAll())
|
||||
{
|
||||
update(board);
|
||||
}
|
||||
}
|
||||
|
||||
public static void update(Board board)
|
||||
{
|
||||
boolean changed = false;
|
||||
for (TerritoryAccess ta : board.getMap().values())
|
||||
{
|
||||
changed |= update(ta);
|
||||
}
|
||||
if (changed)
|
||||
{
|
||||
board.changed();
|
||||
board.sync();
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean update(TerritoryAccess entity)
|
||||
{
|
||||
// Before and After
|
||||
Set<String> before = entity.playerIds;
|
||||
if (before == null) return false;
|
||||
Set<String> after = IdUpdateUtil.update(before, true);
|
||||
if (after == null) return false;
|
||||
|
||||
// NoChange
|
||||
if (MUtil.equals(before, after)) return false;
|
||||
|
||||
// Apply
|
||||
entity.playerIds = after;
|
||||
//entity.sync();
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
@ -3,7 +3,7 @@ package com.massivecraft.factions;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
|
||||
|
||||
/**
|
||||
@ -67,9 +67,9 @@ public enum FFlag
|
||||
// DEFAULTS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean getDefault(Object o)
|
||||
public boolean getDefault()
|
||||
{
|
||||
Boolean ret = UConf.get(o).defaultFactionFlags.get(this);
|
||||
Boolean ret = MConf.get().defaultFactionFlags.get(this);
|
||||
if (ret == null) return this.getDefaultDefault();
|
||||
return ret;
|
||||
}
|
||||
|
@ -7,10 +7,10 @@ import java.util.LinkedHashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.massivecraft.factions.entity.BoardColls;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.massivecore.ps.PS;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
|
||||
@ -79,9 +79,9 @@ public enum FPerm
|
||||
// DEFAULTS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public Set<Rel> getDefault(Object o)
|
||||
public Set<Rel> getDefault()
|
||||
{
|
||||
Set<Rel> ret = UConf.get(o).defaultFactionPerms.get(this);
|
||||
Set<Rel> ret = MConf.get().defaultFactionPerms.get(this);
|
||||
if (ret == null) return this.getDefaultDefault();
|
||||
ret = new LinkedHashSet<Rel>(ret);
|
||||
return ret;
|
||||
@ -125,7 +125,7 @@ public enum FPerm
|
||||
// HAS?
|
||||
// -------------------------------------------- //
|
||||
|
||||
public String createDeniedMessage(UPlayer uplayer, Faction hostFaction)
|
||||
public String createDeniedMessage(MPlayer uplayer, Faction hostFaction)
|
||||
{
|
||||
String ret = Txt.parse("%s<b> does not allow you to %s<b>.", hostFaction.describeTo(uplayer, true), this.getDescription());
|
||||
if (Perm.ADMIN.has(uplayer.getPlayer()))
|
||||
@ -141,7 +141,7 @@ public enum FPerm
|
||||
return hostFaction.getPermittedRelations(this).contains(rel);
|
||||
}
|
||||
|
||||
public boolean has(UPlayer uplayer, Faction hostFaction, boolean verboose)
|
||||
public boolean has(MPlayer uplayer, Faction hostFaction, boolean verboose)
|
||||
{
|
||||
if (uplayer.isUsingAdminMode()) return true;
|
||||
|
||||
@ -153,11 +153,11 @@ public enum FPerm
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean has(UPlayer uplayer, PS ps, boolean verboose)
|
||||
public boolean has(MPlayer uplayer, PS ps, boolean verboose)
|
||||
{
|
||||
if (uplayer.isUsingAdminMode()) return true;
|
||||
|
||||
TerritoryAccess ta = BoardColls.get().getTerritoryAccessAt(ps);
|
||||
TerritoryAccess ta = BoardColl.get().getTerritoryAccessAt(ps);
|
||||
Faction hostFaction = ta.getHostFaction(ps);
|
||||
|
||||
if (this.isTerritoryPerm())
|
||||
|
@ -4,7 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.massivecore.Predictate;
|
||||
|
||||
@ -35,7 +35,7 @@ public class FactionEqualsPredictate implements Predictate<CommandSender>, Seria
|
||||
@Override
|
||||
public boolean apply(CommandSender sender)
|
||||
{
|
||||
UPlayer uplayer = UPlayer.get(sender);
|
||||
MPlayer uplayer = MPlayer.get(sender);
|
||||
return this.factionId.equals(uplayer.getFactionId());
|
||||
}
|
||||
|
||||
|
@ -22,12 +22,10 @@ import com.massivecraft.factions.chat.tag.ChatTagRoleprefixforce;
|
||||
import com.massivecraft.factions.chat.tag.ChatTagTitle;
|
||||
import com.massivecraft.factions.cmd.*;
|
||||
import com.massivecraft.factions.entity.Board;
|
||||
import com.massivecraft.factions.entity.BoardColls;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.factions.entity.MPlayerColl;
|
||||
import com.massivecraft.factions.entity.UConfColls;
|
||||
import com.massivecraft.factions.entity.UPlayerColls;
|
||||
import com.massivecraft.factions.entity.FactionColls;
|
||||
import com.massivecraft.factions.entity.MConfColl;
|
||||
import com.massivecraft.factions.integration.dynmap.IntegrationDynmap;
|
||||
import com.massivecraft.factions.integration.dynmap.IntegrationDynmapFactions;
|
||||
@ -117,11 +115,9 @@ public class Factions extends MassivePlugin
|
||||
this.databaseInitialized = false;
|
||||
MConfColl.get().init();
|
||||
MPlayerColl.get().init();
|
||||
UConfColls.get().init();
|
||||
UPlayerColls.get().init();
|
||||
FactionColls.get().init();
|
||||
BoardColls.get().init();
|
||||
FactionColls.get().reindexUPlayers();
|
||||
FactionColl.get().init();
|
||||
BoardColl.get().init();
|
||||
FactionColl.get().reindexUPlayers();
|
||||
this.databaseInitialized = true;
|
||||
|
||||
// Commands
|
||||
@ -129,7 +125,6 @@ public class Factions extends MassivePlugin
|
||||
this.outerCmdFactions.register();
|
||||
|
||||
// Setup Listeners
|
||||
EngineIdUpdate.get().activate();
|
||||
FactionsListenerMain.get().setup();
|
||||
FactionsListenerChat.get().setup();
|
||||
FactionsListenerExploit.get().setup();
|
||||
|
@ -2,9 +2,9 @@ package com.massivecraft.factions;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
|
||||
public class PlayerRoleComparator implements Comparator<UPlayer>
|
||||
public class PlayerRoleComparator implements Comparator<MPlayer>
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// INSTANCE & CONSTRUCT
|
||||
@ -18,7 +18,7 @@ public class PlayerRoleComparator implements Comparator<UPlayer>
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public int compare(UPlayer o1, UPlayer o2)
|
||||
public int compare(MPlayer o1, MPlayer o2)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
|
@ -8,11 +8,8 @@ import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.FactionColls;
|
||||
import com.massivecraft.factions.entity.UPlayerColl;
|
||||
import com.massivecraft.factions.entity.UPlayerColls;
|
||||
|
||||
public class TerritoryAccess
|
||||
{
|
||||
@ -99,16 +96,15 @@ public class TerritoryAccess
|
||||
|
||||
public Faction getHostFaction(Object universe)
|
||||
{
|
||||
return FactionColls.get().get(universe).get(this.getHostFactionId());
|
||||
return FactionColl.get().get(this.getHostFactionId());
|
||||
}
|
||||
|
||||
public LinkedHashSet<UPlayer> getGrantedUPlayers(Object universe)
|
||||
public LinkedHashSet<MPlayer> getGrantedUPlayers(Object universe)
|
||||
{
|
||||
LinkedHashSet<UPlayer> ret = new LinkedHashSet<UPlayer>();
|
||||
UPlayerColl coll = UPlayerColls.get().get(universe);
|
||||
LinkedHashSet<MPlayer> ret = new LinkedHashSet<MPlayer>();
|
||||
for (String playerId : this.getPlayerIds())
|
||||
{
|
||||
ret.add(coll.get(playerId));
|
||||
ret.add(MPlayer.get(playerId));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -116,10 +112,9 @@ public class TerritoryAccess
|
||||
public LinkedHashSet<Faction> getGrantedFactions(Object universe)
|
||||
{
|
||||
LinkedHashSet<Faction> ret = new LinkedHashSet<Faction>();
|
||||
FactionColl coll = FactionColls.get().get(universe);
|
||||
for (String factionId : this.getFactionIds())
|
||||
{
|
||||
ret.add(coll.get(factionId));
|
||||
ret.add(FactionColl.get().get(factionId));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -205,7 +200,7 @@ public class TerritoryAccess
|
||||
// true means elevated access
|
||||
// false means decreased access
|
||||
// null means standard access
|
||||
public Boolean hasTerritoryAccess(UPlayer uplayer)
|
||||
public Boolean hasTerritoryAccess(MPlayer uplayer)
|
||||
{
|
||||
if (this.getPlayerIds().contains(uplayer.getId())) return true;
|
||||
|
||||
|
@ -4,8 +4,7 @@ import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.chat.ChatTagAbstract;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
|
||||
public class ChatTagName extends ChatTagAbstract
|
||||
{
|
||||
@ -24,11 +23,8 @@ public class ChatTagName extends ChatTagAbstract
|
||||
@Override
|
||||
public String getReplacement(CommandSender sender, CommandSender recipient)
|
||||
{
|
||||
// Check disabled
|
||||
if (UConf.isDisabled(sender)) return "";
|
||||
|
||||
// Get entities
|
||||
UPlayer usender = UPlayer.get(sender);
|
||||
MPlayer usender = MPlayer.get(sender);
|
||||
|
||||
// No "force"
|
||||
Faction faction = usender.getFaction();
|
||||
|
@ -4,8 +4,7 @@ import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.chat.ChatTagAbstract;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
|
||||
public class ChatTagNameforce extends ChatTagAbstract
|
||||
{
|
||||
@ -24,11 +23,8 @@ public class ChatTagNameforce extends ChatTagAbstract
|
||||
@Override
|
||||
public String getReplacement(CommandSender sender, CommandSender recipient)
|
||||
{
|
||||
// Check disabled
|
||||
if (UConf.isDisabled(sender)) return "";
|
||||
|
||||
// Get entities
|
||||
UPlayer usender = UPlayer.get(sender);
|
||||
MPlayer usender = MPlayer.get(sender);
|
||||
|
||||
Faction faction = usender.getFaction();
|
||||
return faction.getName();
|
||||
|
@ -3,8 +3,7 @@ package com.massivecraft.factions.chat.tag;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.chat.ChatTagAbstract;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
|
||||
public class ChatTagRelcolor extends ChatTagAbstract
|
||||
{
|
||||
@ -23,15 +22,12 @@ public class ChatTagRelcolor extends ChatTagAbstract
|
||||
@Override
|
||||
public String getReplacement(CommandSender sender, CommandSender recipient)
|
||||
{
|
||||
// Check disabled
|
||||
if (UConf.isDisabled(sender)) return "";
|
||||
|
||||
// Opt out if no recipient
|
||||
if (recipient == null) return null;
|
||||
|
||||
// Get entities
|
||||
UPlayer usender = UPlayer.get(sender);
|
||||
UPlayer urecipient = UPlayer.get(recipient);
|
||||
MPlayer usender = MPlayer.get(sender);
|
||||
MPlayer urecipient = MPlayer.get(recipient);
|
||||
|
||||
return urecipient.getRelationTo(usender).getColor().toString();
|
||||
}
|
||||
|
@ -3,8 +3,7 @@ package com.massivecraft.factions.chat.tag;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.chat.ChatTagAbstract;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
|
||||
public class ChatTagRole extends ChatTagAbstract
|
||||
@ -24,11 +23,8 @@ public class ChatTagRole extends ChatTagAbstract
|
||||
@Override
|
||||
public String getReplacement(CommandSender sender, CommandSender recipient)
|
||||
{
|
||||
// Check disabled
|
||||
if (UConf.isDisabled(sender)) return "";
|
||||
|
||||
// Get entities
|
||||
UPlayer usender = UPlayer.get(sender);
|
||||
MPlayer usender = MPlayer.get(sender);
|
||||
|
||||
return Txt.upperCaseFirst(usender.getRole().toString().toLowerCase());
|
||||
}
|
||||
|
@ -4,8 +4,7 @@ import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.chat.ChatTagAbstract;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
|
||||
public class ChatTagRoleprefix extends ChatTagAbstract
|
||||
{
|
||||
@ -24,11 +23,8 @@ public class ChatTagRoleprefix extends ChatTagAbstract
|
||||
@Override
|
||||
public String getReplacement(CommandSender sender, CommandSender recipient)
|
||||
{
|
||||
// Check disabled
|
||||
if (UConf.isDisabled(sender)) return "";
|
||||
|
||||
// Get entities
|
||||
UPlayer usender = UPlayer.get(sender);
|
||||
MPlayer usender = MPlayer.get(sender);
|
||||
|
||||
// No "force"
|
||||
Faction faction = usender.getFaction();
|
||||
|
@ -3,8 +3,7 @@ package com.massivecraft.factions.chat.tag;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.chat.ChatTagAbstract;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
|
||||
public class ChatTagRoleprefixforce extends ChatTagAbstract
|
||||
{
|
||||
@ -23,11 +22,8 @@ public class ChatTagRoleprefixforce extends ChatTagAbstract
|
||||
@Override
|
||||
public String getReplacement(CommandSender sender, CommandSender recipient)
|
||||
{
|
||||
// Check disabled
|
||||
if (UConf.isDisabled(sender)) return "";
|
||||
|
||||
// Get entities
|
||||
UPlayer usender = UPlayer.get(sender);
|
||||
MPlayer usender = MPlayer.get(sender);
|
||||
|
||||
return usender.getRole().getPrefix();
|
||||
}
|
||||
|
@ -3,8 +3,7 @@ package com.massivecraft.factions.chat.tag;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.chat.ChatTagAbstract;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
|
||||
public class ChatTagTitle extends ChatTagAbstract
|
||||
{
|
||||
@ -23,11 +22,8 @@ public class ChatTagTitle extends ChatTagAbstract
|
||||
@Override
|
||||
public String getReplacement(CommandSender sender, CommandSender recipient)
|
||||
{
|
||||
// Check disabled
|
||||
if (UConf.isDisabled(sender)) return "";
|
||||
|
||||
// Get entities
|
||||
UPlayer usender = UPlayer.get(sender);
|
||||
MPlayer usender = MPlayer.get(sender);
|
||||
|
||||
if (!usender.hasTitle()) return "";
|
||||
return usender.getTitle();
|
||||
|
@ -1,7 +1,6 @@
|
||||
package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.massivecore.cmd.HelpCommand;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqIsPlayer;
|
||||
@ -32,7 +31,6 @@ public class CmdFactionsAccess extends FCommand
|
||||
this.addAliases("access");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqIsPlayer.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.ACCESS.node));
|
||||
}
|
||||
|
@ -6,8 +6,7 @@ import java.util.List;
|
||||
|
||||
import com.massivecraft.factions.RelationParticipator;
|
||||
import com.massivecraft.factions.TerritoryAccess;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.BoardColls;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqIsPlayer;
|
||||
import com.massivecraft.massivecore.ps.PS;
|
||||
@ -32,7 +31,6 @@ public abstract class CmdFactionsAccessAbstract extends FCommand
|
||||
public CmdFactionsAccessAbstract()
|
||||
{
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqIsPlayer.get());
|
||||
}
|
||||
|
||||
@ -44,7 +42,7 @@ public abstract class CmdFactionsAccessAbstract extends FCommand
|
||||
public void perform()
|
||||
{
|
||||
chunk = PS.valueOf(me).getChunk(true);
|
||||
ta = BoardColls.get().getTerritoryAccessAt(chunk);
|
||||
ta = BoardColl.get().getTerritoryAccessAt(chunk);
|
||||
hostFaction = ta.getHostFaction(usender);
|
||||
|
||||
this.innerPerform();
|
||||
|
@ -3,7 +3,7 @@ package com.massivecraft.factions.cmd;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.entity.BoardColls;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.massivecore.cmd.arg.ARBoolean;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
@ -35,7 +35,7 @@ public class CmdFactionsAccessFaction extends CmdFactionsAccessAbstract
|
||||
public void innerPerform()
|
||||
{
|
||||
// Args
|
||||
Faction faction = this.arg(0, ARFaction.get(usender));
|
||||
Faction faction = this.arg(0, ARFaction.get());
|
||||
if (faction == null) return;
|
||||
|
||||
Boolean newValue = this.arg(1, ARBoolean.get(), !ta.isFactionIdGranted(faction.getId()));
|
||||
@ -46,7 +46,7 @@ public class CmdFactionsAccessFaction extends CmdFactionsAccessAbstract
|
||||
|
||||
// Apply
|
||||
ta = ta.withFactionId(faction.getId(), newValue);
|
||||
BoardColls.get().setTerritoryAccessAt(chunk, ta);
|
||||
BoardColl.get().setTerritoryAccessAt(chunk, ta);
|
||||
|
||||
// Inform
|
||||
this.sendAccessInfo();
|
||||
|
@ -3,8 +3,8 @@ package com.massivecraft.factions.cmd;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARUPlayer;
|
||||
import com.massivecraft.factions.entity.BoardColls;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.massivecore.cmd.arg.ARBoolean;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
|
||||
@ -35,7 +35,7 @@ public class CmdFactionsAccessPlayer extends CmdFactionsAccessAbstract
|
||||
public void innerPerform()
|
||||
{
|
||||
// Args
|
||||
UPlayer uplayer = this.arg(0, ARUPlayer.getAny(usender));
|
||||
MPlayer uplayer = this.arg(0, ARUPlayer.getAny());
|
||||
if (uplayer == null) return;
|
||||
|
||||
Boolean newValue = this.arg(1, ARBoolean.get(), !ta.isPlayerIdGranted(uplayer.getId()));
|
||||
@ -46,7 +46,7 @@ public class CmdFactionsAccessPlayer extends CmdFactionsAccessAbstract
|
||||
|
||||
// Apply
|
||||
ta = ta.withPlayerId(uplayer.getId(), newValue);
|
||||
BoardColls.get().setTerritoryAccessAt(chunk, ta);
|
||||
BoardColl.get().setTerritoryAccessAt(chunk, ta);
|
||||
|
||||
// Inform
|
||||
this.sendAccessInfo();
|
||||
|
@ -3,9 +3,7 @@ package com.massivecraft.factions.cmd;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqIsPlayer;
|
||||
import com.massivecraft.massivecore.ps.PS;
|
||||
@ -25,7 +23,6 @@ public class CmdFactionsAutoClaim extends FCommand
|
||||
this.addOptionalArg("faction", "you");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.AUTOCLAIM.node));
|
||||
this.addRequirements(ReqIsPlayer.get());
|
||||
}
|
||||
@ -37,11 +34,8 @@ public class CmdFactionsAutoClaim extends FCommand
|
||||
@Override
|
||||
public void perform()
|
||||
{
|
||||
// Check disabled
|
||||
if (UConf.isDisabled(sender, sender)) return;
|
||||
|
||||
// Args
|
||||
Faction forFaction = this.arg(0, ARFaction.get(usenderFaction), usenderFaction);
|
||||
Faction forFaction = this.arg(0, ARFaction.get(), usenderFaction);
|
||||
|
||||
if (forFaction == null || forFaction == usender.getAutoClaimFaction())
|
||||
{
|
||||
|
@ -3,7 +3,6 @@ package com.massivecraft.factions.cmd;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.task.SpiralTask;
|
||||
@ -29,7 +28,6 @@ public class CmdFactionsClaim extends FCommand
|
||||
this.addOptionalArg("faction", "you");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqIsPlayer.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.CLAIM.node));
|
||||
}
|
||||
@ -45,7 +43,7 @@ public class CmdFactionsClaim extends FCommand
|
||||
Integer radius = this.arg(0, ARInteger.get(), 1);
|
||||
if (radius == null) return;
|
||||
|
||||
final Faction forFaction = this.arg(1, ARFaction.get(me), usenderFaction);
|
||||
final Faction forFaction = this.arg(1, ARFaction.get(), usenderFaction);
|
||||
if (forFaction == null) return;
|
||||
|
||||
// FPerm
|
||||
|
@ -5,14 +5,12 @@ import java.util.ArrayList;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqHasntFaction;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.UPlayerColls;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.factions.entity.FactionColls;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.MPlayerColl;
|
||||
import com.massivecraft.factions.event.EventFactionsCreate;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange.MembershipChangeReason;
|
||||
@ -34,7 +32,6 @@ public class CmdFactionsCreate extends FCommand
|
||||
this.addRequiredArg("name");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasntFaction.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.CREATE.node));
|
||||
}
|
||||
@ -50,15 +47,13 @@ public class CmdFactionsCreate extends FCommand
|
||||
String newName = this.arg(0);
|
||||
|
||||
// Verify
|
||||
FactionColl coll = FactionColls.get().get(usender);
|
||||
|
||||
if (coll.isNameTaken(newName))
|
||||
if (FactionColl.get().isNameTaken(newName))
|
||||
{
|
||||
msg("<b>That name is already in use.");
|
||||
return;
|
||||
}
|
||||
|
||||
ArrayList<String> nameValidationErrors = coll.validateName(newName);
|
||||
ArrayList<String> nameValidationErrors = FactionColl.get().validateName(newName);
|
||||
if (nameValidationErrors.size() > 0)
|
||||
{
|
||||
sendMessage(nameValidationErrors);
|
||||
@ -69,12 +64,12 @@ public class CmdFactionsCreate extends FCommand
|
||||
String factionId = MStore.createId();
|
||||
|
||||
// Event
|
||||
EventFactionsCreate createEvent = new EventFactionsCreate(sender, coll.getUniverse(), factionId, newName);
|
||||
EventFactionsCreate createEvent = new EventFactionsCreate(sender, factionId, newName);
|
||||
createEvent.run();
|
||||
if (createEvent.isCancelled()) return;
|
||||
|
||||
// Apply
|
||||
Faction faction = coll.create(factionId);
|
||||
Faction faction = FactionColl.get().create(factionId);
|
||||
faction.setName(newName);
|
||||
|
||||
usender.setRole(Rel.LEADER);
|
||||
@ -85,7 +80,7 @@ public class CmdFactionsCreate extends FCommand
|
||||
// NOTE: join event cannot be cancelled or you'll have an empty faction
|
||||
|
||||
// Inform
|
||||
for (UPlayer follower : UPlayerColls.get().get(usender).getAllOnline())
|
||||
for (MPlayer follower : MPlayerColl.get().getAllOnline())
|
||||
{
|
||||
follower.msg("%s<i> created a new faction %s", usender.describeTo(follower, true), faction.getName(follower));
|
||||
}
|
||||
|
@ -3,8 +3,7 @@ package com.massivecraft.factions.cmd;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.arg.ARUPlayer;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
|
||||
public class CmdFactionsDemote extends FCommand
|
||||
@ -22,7 +21,6 @@ public class CmdFactionsDemote extends FCommand
|
||||
this.addRequiredArg("player");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.DEMOTE.node));
|
||||
|
||||
//To demote someone from member -> recruit you must be an officer.
|
||||
@ -37,7 +35,7 @@ public class CmdFactionsDemote extends FCommand
|
||||
@Override
|
||||
public void perform()
|
||||
{
|
||||
UPlayer you = this.arg(0, ARUPlayer.getAny(usender));
|
||||
MPlayer you = this.arg(0, ARUPlayer.getAny());
|
||||
if (you == null) return;
|
||||
|
||||
if (you.getFaction() != usenderFaction)
|
||||
|
@ -2,10 +2,9 @@ package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqHasFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqRoleIsAtLeast;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.event.EventFactionsDescriptionChange;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
import com.massivecraft.massivecore.mixin.Mixin;
|
||||
@ -26,7 +25,6 @@ public class CmdFactionsDescription extends FCommand
|
||||
this.setErrorOnToManyArgs(false);
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.DESCRIPTION.node));
|
||||
this.addRequirements(ReqHasFaction.get());
|
||||
this.addRequirements(ReqRoleIsAtLeast.get(Rel.OFFICER));
|
||||
@ -52,7 +50,7 @@ public class CmdFactionsDescription extends FCommand
|
||||
usenderFaction.setDescription(newDescription);
|
||||
|
||||
// Inform
|
||||
for (UPlayer follower : usenderFaction.getUPlayers())
|
||||
for (MPlayer follower : usenderFaction.getUPlayers())
|
||||
{
|
||||
follower.msg("<i>%s <i>set your faction description to:\n%s", Mixin.getDisplayName(sender, follower), usenderFaction.getDescription());
|
||||
}
|
||||
|
@ -1,12 +1,11 @@
|
||||
package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.UPlayerColls;
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.FactionColls;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.MPlayerColl;
|
||||
import com.massivecraft.factions.event.EventFactionsDisband;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange.MembershipChangeReason;
|
||||
@ -33,7 +32,6 @@ public class CmdFactionsDisband extends FCommand
|
||||
this.addOptionalArg("faction", "you");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.DISBAND.node));
|
||||
}
|
||||
|
||||
@ -45,7 +43,7 @@ public class CmdFactionsDisband extends FCommand
|
||||
public void perform()
|
||||
{
|
||||
// Args
|
||||
Faction faction = this.arg(0, ARFaction.get(usender), usenderFaction);
|
||||
Faction faction = this.arg(0, ARFaction.get(), usenderFaction);
|
||||
if (faction == null) return;
|
||||
|
||||
// FPerm
|
||||
@ -66,14 +64,14 @@ public class CmdFactionsDisband extends FCommand
|
||||
// Merged Apply and Inform
|
||||
|
||||
// Run event for each player in the faction
|
||||
for (UPlayer uplayer : faction.getUPlayers())
|
||||
for (MPlayer uplayer : faction.getUPlayers())
|
||||
{
|
||||
EventFactionsMembershipChange membershipChangeEvent = new EventFactionsMembershipChange(sender, uplayer, FactionColls.get().get(faction).getNone(), MembershipChangeReason.DISBAND);
|
||||
EventFactionsMembershipChange membershipChangeEvent = new EventFactionsMembershipChange(sender, uplayer, FactionColl.get().getNone(), MembershipChangeReason.DISBAND);
|
||||
membershipChangeEvent.run();
|
||||
}
|
||||
|
||||
// Inform all players
|
||||
for (UPlayer uplayer : UPlayerColls.get().get(usender).getAllOnline())
|
||||
for (MPlayer uplayer : MPlayerColl.get().getAllOnline())
|
||||
{
|
||||
String who = usender.describeTo(uplayer);
|
||||
if (uplayer.getFaction() == faction)
|
||||
|
@ -7,9 +7,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.event.EventFactionsChunkChangeType;
|
||||
import com.massivecraft.factions.integration.Econ;
|
||||
@ -39,7 +38,6 @@ public class CmdFactionsFaction extends FCommand
|
||||
this.addOptionalArg("faction", "you");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.FACTION.node));
|
||||
}
|
||||
|
||||
@ -51,11 +49,10 @@ public class CmdFactionsFaction extends FCommand
|
||||
public void perform()
|
||||
{
|
||||
// Args
|
||||
Faction faction = this.arg(0, ARFaction.get(usenderFaction), usenderFaction);
|
||||
Faction faction = this.arg(0, ARFaction.get(), usenderFaction);
|
||||
if (faction == null) return;
|
||||
|
||||
// Data precalculation
|
||||
UConf uconf = UConf.get(faction);
|
||||
//boolean none = faction.isNone();
|
||||
boolean normal = faction.isNormal();
|
||||
|
||||
@ -82,13 +79,13 @@ public class CmdFactionsFaction extends FCommand
|
||||
msg("<a>Land / Power / Maxpower: <i> %d/%d/%d %s", faction.getLandCount(), faction.getPowerRounded(), faction.getPowerMaxRounded(), boost);
|
||||
|
||||
// show the land value
|
||||
if (Econ.isEnabled(faction))
|
||||
if (Econ.isEnabled())
|
||||
{
|
||||
long landCount = faction.getLandCount();
|
||||
|
||||
for (EventFactionsChunkChangeType type : EventFactionsChunkChangeType.values())
|
||||
{
|
||||
Double money = uconf.econChunkCost.get(type);
|
||||
Double money = MConf.get().econChunkCost.get(type);
|
||||
if (money == null) continue;
|
||||
if (money == 0D) continue;
|
||||
money *= landCount;
|
||||
@ -108,7 +105,7 @@ public class CmdFactionsFaction extends FCommand
|
||||
}
|
||||
|
||||
// Show bank contents
|
||||
if (UConf.get(faction).bankEnabled)
|
||||
if (MConf.get().bankEnabled)
|
||||
{
|
||||
msg("<a>Bank contains: <i>"+Money.format(Money.get(faction)));
|
||||
}
|
||||
@ -148,10 +145,10 @@ public class CmdFactionsFaction extends FCommand
|
||||
List<String> followerNamesOnline = new ArrayList<String>();
|
||||
List<String> followerNamesOffline = new ArrayList<String>();
|
||||
|
||||
List<UPlayer> followers = faction.getUPlayers();
|
||||
List<MPlayer> followers = faction.getUPlayers();
|
||||
Collections.sort(followers, PlayerRoleComparator.get());
|
||||
|
||||
for (UPlayer follower : followers)
|
||||
for (MPlayer follower : followers)
|
||||
{
|
||||
if (follower.isOnline() && Mixin.canSee(sender, follower.getId()))
|
||||
{
|
||||
|
@ -4,7 +4,6 @@ import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARFFlag;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.massivecore.cmd.arg.ARBoolean;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
@ -27,7 +26,6 @@ public class CmdFactionsFlag extends FCommand
|
||||
this.addOptionalArg("yes/no", "read");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.FLAG.node));
|
||||
}
|
||||
|
||||
@ -38,7 +36,7 @@ public class CmdFactionsFlag extends FCommand
|
||||
@Override
|
||||
public void perform()
|
||||
{
|
||||
Faction faction = this.arg(0, ARFaction.get(sender), usenderFaction);
|
||||
Faction faction = this.arg(0, ARFaction.get(), usenderFaction);
|
||||
if (faction == null) return;
|
||||
|
||||
if ( ! this.argIsSet(1))
|
||||
|
@ -8,11 +8,10 @@ import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqHasFaction;
|
||||
import com.massivecraft.factions.entity.BoardColls;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.event.EventFactionsHomeTeleport;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
@ -34,7 +33,6 @@ public class CmdFactionsHome extends FCommand
|
||||
this.addAliases("home");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.HOME.node));
|
||||
this.addRequirements(ReqHasFaction.get());
|
||||
this.addRequirements(ReqIsPlayer.get());
|
||||
@ -47,16 +45,14 @@ public class CmdFactionsHome extends FCommand
|
||||
@Override
|
||||
public void perform()
|
||||
{
|
||||
UConf uconf = UConf.get(sender);
|
||||
|
||||
// TODO: Hide this command on help also.
|
||||
if ( ! uconf.homesEnabled)
|
||||
if ( ! MConf.get().homesEnabled)
|
||||
{
|
||||
usender.msg("<b>Sorry, Faction homes are disabled on this server.");
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! uconf.homesTeleportCommandEnabled)
|
||||
if ( ! MConf.get().homesTeleportCommandEnabled)
|
||||
{
|
||||
usender.msg("<b>Sorry, the ability to teleport to Faction homes is disabled on this server.");
|
||||
return;
|
||||
@ -69,26 +65,26 @@ public class CmdFactionsHome extends FCommand
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! uconf.homesTeleportAllowedFromEnemyTerritory && usender.isInEnemyTerritory())
|
||||
if ( ! MConf.get().homesTeleportAllowedFromEnemyTerritory && usender.isInEnemyTerritory())
|
||||
{
|
||||
usender.msg("<b>You cannot teleport to your faction home while in the territory of an enemy faction.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!uconf.homesTeleportAllowedFromDifferentWorld && !me.getWorld().getName().equalsIgnoreCase(usenderFaction.getHome().getWorld()))
|
||||
if ( ! MConf.get().homesTeleportAllowedFromDifferentWorld && !me.getWorld().getName().equalsIgnoreCase(usenderFaction.getHome().getWorld()))
|
||||
{
|
||||
usender.msg("<b>You cannot teleport to your faction home while in a different world.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Faction faction = BoardColls.get().getFactionAt(PS.valueOf(me));
|
||||
Faction faction = BoardColl.get().getFactionAt(PS.valueOf(me));
|
||||
Location loc = me.getLocation().clone();
|
||||
|
||||
// if player is not in a safe zone or their own faction territory, only allow teleport if no enemies are nearby
|
||||
if
|
||||
(
|
||||
uconf.homesTeleportAllowedEnemyDistance > 0
|
||||
MConf.get().homesTeleportAllowedEnemyDistance > 0
|
||||
&&
|
||||
faction.getFlag(FFlag.PVP)
|
||||
&&
|
||||
@ -98,7 +94,7 @@ public class CmdFactionsHome extends FCommand
|
||||
(
|
||||
usender.isInOwnTerritory()
|
||||
&&
|
||||
! uconf.homesTeleportIgnoreEnemiesIfInOwnTerritory
|
||||
! MConf.get().homesTeleportIgnoreEnemiesIfInOwnTerritory
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -113,7 +109,7 @@ public class CmdFactionsHome extends FCommand
|
||||
if (p == null || !p.isOnline() || p.isDead() || p == me || p.getWorld() != w)
|
||||
continue;
|
||||
|
||||
UPlayer fp = UPlayer.get(p);
|
||||
MPlayer fp = MPlayer.get(p);
|
||||
if (usender.getRelationTo(fp) != Rel.ENEMY)
|
||||
continue;
|
||||
|
||||
@ -121,13 +117,13 @@ public class CmdFactionsHome extends FCommand
|
||||
double dx = Math.abs(x - l.getX());
|
||||
double dy = Math.abs(y - l.getY());
|
||||
double dz = Math.abs(z - l.getZ());
|
||||
double max = uconf.homesTeleportAllowedEnemyDistance;
|
||||
double max = MConf.get().homesTeleportAllowedEnemyDistance;
|
||||
|
||||
// box-shaped distance check
|
||||
if (dx > max || dy > max || dz > max)
|
||||
continue;
|
||||
|
||||
usender.msg("<b>You cannot teleport to your faction home while an enemy is within " + uconf.homesTeleportAllowedEnemyDistance + " blocks of you.");
|
||||
usender.msg("<b>You cannot teleport to your faction home while an enemy is within " + MConf.get().homesTeleportAllowedEnemyDistance + " blocks of you.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -4,9 +4,8 @@ import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARUPlayer;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqHasFaction;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.event.EventFactionsInvitedChange;
|
||||
import com.massivecraft.massivecore.cmd.arg.ARBoolean;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
@ -28,7 +27,6 @@ public class CmdFactionsInvite extends FCommand
|
||||
this.addOptionalArg("yes/no", "toggle");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.INVITE.node));
|
||||
this.addRequirements(ReqHasFaction.get());
|
||||
this.addRequirements(ReqIsPlayer.get());
|
||||
@ -42,7 +40,7 @@ public class CmdFactionsInvite extends FCommand
|
||||
public void perform()
|
||||
{
|
||||
// Args
|
||||
UPlayer uplayer = this.arg(0, ARUPlayer.getAny(sender));
|
||||
MPlayer uplayer = this.arg(0, ARUPlayer.getAny());
|
||||
if (uplayer == null) return;
|
||||
|
||||
Boolean newInvited = this.arg(1, ARBoolean.get(), !usenderFaction.isInvited(uplayer));
|
||||
|
@ -4,11 +4,9 @@ import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARUPlayer;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange.MembershipChangeReason;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
@ -30,7 +28,6 @@ public class CmdFactionsJoin extends FCommand
|
||||
this.addOptionalArg("player", "you");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.JOIN.node));
|
||||
}
|
||||
|
||||
@ -42,10 +39,10 @@ public class CmdFactionsJoin extends FCommand
|
||||
public void perform()
|
||||
{
|
||||
// Args
|
||||
Faction faction = this.arg(0, ARFaction.get(sender));
|
||||
Faction faction = this.arg(0, ARFaction.get());
|
||||
if (faction == null) return;
|
||||
|
||||
UPlayer uplayer = this.arg(1, ARUPlayer.getAny(sender), usender);
|
||||
MPlayer uplayer = this.arg(1, ARUPlayer.getAny(), usender);
|
||||
if (uplayer == null) return;
|
||||
Faction uplayerFaction = uplayer.getFaction();
|
||||
|
||||
@ -64,9 +61,9 @@ public class CmdFactionsJoin extends FCommand
|
||||
return;
|
||||
}
|
||||
|
||||
if (UConf.get(faction).factionMemberLimit > 0 && faction.getUPlayers().size() >= UConf.get(faction).factionMemberLimit)
|
||||
if (MConf.get().factionMemberLimit > 0 && faction.getUPlayers().size() >= MConf.get().factionMemberLimit)
|
||||
{
|
||||
msg(" <b>!<white> The faction %s is at the limit of %d members, so %s cannot currently join.", faction.getName(usender), UConf.get(faction).factionMemberLimit, uplayer.describeTo(usender, false));
|
||||
msg(" <b>!<white> The faction %s is at the limit of %d members, so %s cannot currently join.", faction.getName(usender), MConf.get().factionMemberLimit, uplayer.describeTo(usender, false));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -76,7 +73,7 @@ public class CmdFactionsJoin extends FCommand
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UConf.get(faction).canLeaveWithNegativePower && uplayer.getPower() < 0)
|
||||
if (!MConf.get().canLeaveWithNegativePower && uplayer.getPower() < 0)
|
||||
{
|
||||
msg("<b>%s cannot join a faction with a negative power level.", uplayer.describeTo(usender, true));
|
||||
return;
|
||||
|
@ -5,12 +5,10 @@ import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.arg.ARUPlayer;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.FactionColls;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange.MembershipChangeReason;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
@ -31,7 +29,6 @@ public class CmdFactionsKick extends FCommand
|
||||
this.addRequiredArg("player");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.KICK.node));
|
||||
}
|
||||
|
||||
@ -43,7 +40,7 @@ public class CmdFactionsKick extends FCommand
|
||||
public void perform()
|
||||
{
|
||||
// Arg
|
||||
UPlayer uplayer = this.arg(0, ARUPlayer.getAny(sender));
|
||||
MPlayer uplayer = this.arg(0, ARUPlayer.getAny());
|
||||
if (uplayer == null) return;
|
||||
|
||||
// Validate
|
||||
@ -60,7 +57,7 @@ public class CmdFactionsKick extends FCommand
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! UConf.get(uplayer).canLeaveWithNegativePower && uplayer.getPower() < 0)
|
||||
if ( ! MConf.get().canLeaveWithNegativePower && uplayer.getPower() < 0)
|
||||
{
|
||||
msg("<b>You cannot kick that member until their power is positive.");
|
||||
return;
|
||||
@ -71,7 +68,7 @@ public class CmdFactionsKick extends FCommand
|
||||
if (!FPerm.KICK.has(usender, uplayerFaction, true)) return;
|
||||
|
||||
// Event
|
||||
EventFactionsMembershipChange event = new EventFactionsMembershipChange(sender, uplayer, FactionColls.get().get(uplayer).getNone(), MembershipChangeReason.KICK);
|
||||
EventFactionsMembershipChange event = new EventFactionsMembershipChange(sender, uplayer, FactionColl.get().getNone(), MembershipChangeReason.KICK);
|
||||
event.run();
|
||||
if (event.isCancelled()) return;
|
||||
|
||||
|
@ -4,10 +4,9 @@ import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.arg.ARUPlayer;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.UPlayerColls;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MPlayerColl;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange.MembershipChangeReason;
|
||||
import com.massivecraft.factions.util.RelationUtil;
|
||||
@ -29,7 +28,6 @@ public class CmdFactionsLeader extends FCommand
|
||||
this.addOptionalArg("faction", "you");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.LEADER.node));
|
||||
}
|
||||
|
||||
@ -40,13 +38,13 @@ public class CmdFactionsLeader extends FCommand
|
||||
@Override
|
||||
public void perform()
|
||||
{
|
||||
UPlayer newLeader = this.arg(0, ARUPlayer.getAny(sender));
|
||||
MPlayer newLeader = this.arg(0, ARUPlayer.getAny());
|
||||
if (newLeader == null) return;
|
||||
|
||||
Faction targetFaction = this.arg(1, ARFaction.get(sender), usenderFaction);
|
||||
Faction targetFaction = this.arg(1, ARFaction.get(), usenderFaction);
|
||||
if (targetFaction == null) return;
|
||||
|
||||
UPlayer targetFactionCurrentLeader = targetFaction.getLeader();
|
||||
MPlayer targetFactionCurrentLeader = targetFaction.getLeader();
|
||||
|
||||
// We now have uplayer and the target faction
|
||||
if (this.senderIsConsole || usender.isUsingAdminMode() || Perm.LEADER_ANY.has(sender, false))
|
||||
@ -102,7 +100,7 @@ public class CmdFactionsLeader extends FCommand
|
||||
msg("<i>You have promoted %s<i> to the position of faction leader.", newLeader.describeTo(usender, true));
|
||||
|
||||
// Inform all players
|
||||
for (UPlayer uplayer : UPlayerColls.get().get(sender).getAllOnline())
|
||||
for (MPlayer uplayer : MPlayerColl.get().getAllOnline())
|
||||
{
|
||||
uplayer.msg("%s<i> gave %s<i> the leadership of %s<i>.", senderIsConsole ? "A server admin" : RelationUtil.describeThatToMe(usender, uplayer, true), newLeader.describeTo(uplayer), targetFaction.describeTo(uplayer));
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqHasFaction;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
|
||||
@ -17,7 +16,6 @@ public class CmdFactionsLeave extends FCommand
|
||||
this.addAliases("leave");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.LEAVE.node));
|
||||
this.addRequirements(ReqHasFaction.get());
|
||||
}
|
||||
|
@ -5,9 +5,8 @@ import java.util.List;
|
||||
|
||||
import com.massivecraft.factions.FactionListComparator;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.FactionColls;
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.massivecore.cmd.arg.ARInteger;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
@ -28,7 +27,6 @@ public class CmdFactionsList extends FCommand
|
||||
this.addOptionalArg("page", "1");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.LIST.node));
|
||||
}
|
||||
|
||||
@ -45,7 +43,7 @@ public class CmdFactionsList extends FCommand
|
||||
// Create Messages
|
||||
List<String> lines = new ArrayList<String>();
|
||||
|
||||
ArrayList<Faction> factionList = new ArrayList<Faction>(FactionColls.get().get(sender).getAll(null, FactionListComparator.get()));
|
||||
ArrayList<Faction> factionList = new ArrayList<Faction>(FactionColl.get().getAll(null, FactionListComparator.get()));
|
||||
|
||||
final int pageheight = 9;
|
||||
|
||||
@ -65,7 +63,7 @@ public class CmdFactionsList extends FCommand
|
||||
{
|
||||
if (faction.isNone())
|
||||
{
|
||||
lines.add(Txt.parse("<i>Factionless<i> %d online", FactionColls.get().get(sender).getNone().getUPlayersWhereOnline(true).size()));
|
||||
lines.add(Txt.parse("<i>Factionless<i> %d online", FactionColl.get().getNone().getUPlayersWhereOnline(true).size()));
|
||||
continue;
|
||||
}
|
||||
lines.add(Txt.parse("%s<i> %d/%d online, %d/%d/%d",
|
||||
|
@ -1,8 +1,7 @@
|
||||
package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.BoardColls;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.massivecore.cmd.arg.ARBoolean;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqIsPlayer;
|
||||
@ -23,7 +22,6 @@ public class CmdFactionsMap extends FCommand
|
||||
this.addOptionalArg("on/off", "once");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.MAP.node));
|
||||
this.addRequirements(ReqIsPlayer.get());
|
||||
}
|
||||
@ -60,7 +58,7 @@ public class CmdFactionsMap extends FCommand
|
||||
|
||||
public void showMap()
|
||||
{
|
||||
sendMessage(BoardColls.get().getMap(usenderFaction, PS.valueOf(me), me.getLocation().getYaw()));
|
||||
sendMessage(BoardColl.get().getMap(usenderFaction, PS.valueOf(me), me.getLocation().getYaw()));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,7 +2,6 @@ package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.req.ReqBankCommandsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
|
||||
public class CmdFactionsMoney extends FCommand
|
||||
@ -36,7 +35,6 @@ public class CmdFactionsMoney extends FCommand
|
||||
this.addAliases("money");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqBankCommandsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.MONEY.node));
|
||||
}
|
||||
|
@ -2,7 +2,6 @@ package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqBankCommandsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.integration.Econ;
|
||||
import com.massivecraft.factions.Perm;
|
||||
@ -23,7 +22,6 @@ public class CmdFactionsMoneyBalance extends FCommand
|
||||
this.addOptionalArg("faction", "you");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.MONEY_BALANCE.node));
|
||||
this.addRequirements(ReqBankCommandsEnabled.get());
|
||||
}
|
||||
@ -35,7 +33,7 @@ public class CmdFactionsMoneyBalance extends FCommand
|
||||
@Override
|
||||
public void perform()
|
||||
{
|
||||
Faction faction = this.arg(0, ARFaction.get(sender), usenderFaction);
|
||||
Faction faction = this.arg(0, ARFaction.get(), usenderFaction);
|
||||
if (faction == null) return;
|
||||
|
||||
if (faction != usenderFaction && ! Perm.MONEY_BALANCE_ANY.has(sender, true)) return;
|
||||
|
@ -4,7 +4,6 @@ import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqBankCommandsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.integration.Econ;
|
||||
@ -31,7 +30,6 @@ public class CmdFactionsMoneyDeposit extends FCommand
|
||||
this.addOptionalArg("faction", "you");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.MONEY_DEPOSIT.node));
|
||||
this.addRequirements(ReqBankCommandsEnabled.get());
|
||||
}
|
||||
@ -46,7 +44,7 @@ public class CmdFactionsMoneyDeposit extends FCommand
|
||||
Double amount = this.arg(0, ARDouble.get());
|
||||
if (amount == null) return;
|
||||
|
||||
Faction faction = this.arg(1, ARFaction.get(sender), usenderFaction);
|
||||
Faction faction = this.arg(1, ARFaction.get(), usenderFaction);
|
||||
if (faction == null) return;
|
||||
|
||||
boolean success = Econ.transferMoney(usender, usender, faction, amount);
|
||||
|
@ -3,7 +3,6 @@ package com.massivecraft.factions.cmd;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqBankCommandsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.Factions;
|
||||
@ -33,7 +32,6 @@ public class CmdFactionsMoneyTransferFf extends FCommand
|
||||
this.addRequiredArg("faction");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.MONEY_F2F.node));
|
||||
this.addRequirements(ReqBankCommandsEnabled.get());
|
||||
}
|
||||
@ -48,10 +46,10 @@ public class CmdFactionsMoneyTransferFf extends FCommand
|
||||
Double amount = this.arg(0, ARDouble.get());
|
||||
if (amount == null) return;
|
||||
|
||||
Faction from = this.arg(1, ARFaction.get(sender));
|
||||
Faction from = this.arg(1, ARFaction.get());
|
||||
if (from == null) return;
|
||||
|
||||
Faction to = this.arg(2, ARFaction.get(sender));
|
||||
Faction to = this.arg(2, ARFaction.get());
|
||||
if (to == null) return;
|
||||
|
||||
boolean success = Econ.transferMoney(usender, from, to, amount);
|
||||
|
@ -4,8 +4,7 @@ import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARUPlayer;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqBankCommandsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.Factions;
|
||||
@ -35,7 +34,6 @@ public class CmdFactionsMoneyTransferFp extends FCommand
|
||||
this.addRequiredArg("player");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.MONEY_F2P.node));
|
||||
this.addRequirements(ReqBankCommandsEnabled.get());
|
||||
}
|
||||
@ -50,10 +48,10 @@ public class CmdFactionsMoneyTransferFp extends FCommand
|
||||
Double amount = this.arg(0, ARDouble.get());
|
||||
if (amount == null) return;
|
||||
|
||||
Faction from = this.arg(1, ARFaction.get(sender));
|
||||
Faction from = this.arg(1, ARFaction.get());
|
||||
if (from == null) return;
|
||||
|
||||
UPlayer to = this.arg(2, ARUPlayer.getAny(sender));
|
||||
MPlayer to = this.arg(2, ARUPlayer.getAny());
|
||||
if (to == null) return;
|
||||
|
||||
boolean success = Econ.transferMoney(usender, from, to, amount);
|
||||
|
@ -4,8 +4,7 @@ import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARUPlayer;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqBankCommandsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.Factions;
|
||||
@ -35,7 +34,6 @@ public class CmdFactionsMoneyTransferPf extends FCommand
|
||||
this.addRequiredArg("faction");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.MONEY_P2F.node));
|
||||
this.addRequirements(ReqBankCommandsEnabled.get());
|
||||
}
|
||||
@ -50,10 +48,10 @@ public class CmdFactionsMoneyTransferPf extends FCommand
|
||||
Double amount = this.arg(0, ARDouble.get());
|
||||
if (amount == null) return;
|
||||
|
||||
UPlayer from = this.arg(1, ARUPlayer.getAny(sender));
|
||||
MPlayer from = this.arg(1, ARUPlayer.getAny());
|
||||
if (from == null) return;
|
||||
|
||||
Faction to = this.arg(2, ARFaction.get(sender));
|
||||
Faction to = this.arg(2, ARFaction.get());
|
||||
if (to == null) return;
|
||||
|
||||
boolean success = Econ.transferMoney(usender, from, to, amount);
|
||||
|
@ -3,8 +3,7 @@ package com.massivecraft.factions.cmd;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqBankCommandsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.Factions;
|
||||
@ -33,7 +32,6 @@ public class CmdFactionsMoneyWithdraw extends FCommand
|
||||
this.addOptionalArg("faction", "you");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.MONEY_WITHDRAW.node));
|
||||
this.addRequirements(ReqBankCommandsEnabled.get());
|
||||
}
|
||||
@ -48,10 +46,10 @@ public class CmdFactionsMoneyWithdraw extends FCommand
|
||||
Double amount = this.arg(0, ARDouble.get());
|
||||
if (amount == null) return;
|
||||
|
||||
Faction from = this.arg(1, ARFaction.get(sender), usenderFaction);
|
||||
Faction from = this.arg(1, ARFaction.get(), usenderFaction);
|
||||
if (from == null) return;
|
||||
|
||||
UPlayer to = usender;
|
||||
MPlayer to = usender;
|
||||
|
||||
boolean success = Econ.transferMoney(usender, from, to, amount);
|
||||
|
||||
|
@ -4,13 +4,11 @@ import java.util.ArrayList;
|
||||
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqHasFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqRoleIsAtLeast;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.factions.entity.FactionColls;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.event.EventFactionsNameChange;
|
||||
import com.massivecraft.factions.util.MiscUtil;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
@ -30,7 +28,6 @@ public class CmdFactionsName extends FCommand
|
||||
this.addRequiredArg("new name");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.NAME.node));
|
||||
this.addRequirements(ReqHasFaction.get());
|
||||
this.addRequirements(ReqRoleIsAtLeast.get(Rel.OFFICER));
|
||||
@ -48,15 +45,14 @@ public class CmdFactionsName extends FCommand
|
||||
|
||||
// TODO does not first test cover selfcase?
|
||||
|
||||
FactionColl factionColl = FactionColls.get().get(usenderFaction);
|
||||
if (factionColl.isNameTaken(newName) && ! MiscUtil.getComparisonString(newName).equals(usenderFaction.getComparisonName()))
|
||||
if (FactionColl.get().isNameTaken(newName) && ! MiscUtil.getComparisonString(newName).equals(usenderFaction.getComparisonName()))
|
||||
{
|
||||
msg("<b>That name is already taken");
|
||||
return;
|
||||
}
|
||||
|
||||
ArrayList<String> errors = new ArrayList<String>();
|
||||
errors.addAll(factionColl.validateName(newName));
|
||||
errors.addAll(FactionColl.get().validateName(newName));
|
||||
if (errors.size() > 0)
|
||||
{
|
||||
sendMessage(errors);
|
||||
@ -76,8 +72,8 @@ public class CmdFactionsName extends FCommand
|
||||
// Inform
|
||||
usenderFaction.msg("%s<i> changed your faction name to %s", usender.describeTo(usenderFaction, true), usenderFaction.getName(usenderFaction));
|
||||
|
||||
if (!UConf.get(usender).broadcastNameChange) return;
|
||||
for (Faction faction : FactionColls.get().get(usenderFaction).getAll())
|
||||
if (!MConf.get().broadcastNameChange) return;
|
||||
for (Faction faction : FactionColl.get().getAll())
|
||||
{
|
||||
if (faction == usenderFaction)
|
||||
{
|
||||
|
@ -3,8 +3,7 @@ package com.massivecraft.factions.cmd;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.arg.ARUPlayer;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
|
||||
@ -23,7 +22,6 @@ public class CmdFactionsOfficer extends FCommand
|
||||
this.addRequiredArg("player");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.OFFICER.node));
|
||||
}
|
||||
|
||||
@ -34,7 +32,7 @@ public class CmdFactionsOfficer extends FCommand
|
||||
@Override
|
||||
public void perform()
|
||||
{
|
||||
UPlayer you = this.arg(0, ARUPlayer.getAny(sender));
|
||||
MPlayer you = this.arg(0, ARUPlayer.getAny());
|
||||
if (you == null) return;
|
||||
|
||||
boolean permAny = Perm.OFFICER_ANY.has(sender, false);
|
||||
|
@ -2,7 +2,6 @@ package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqHasFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqRoleIsAtLeast;
|
||||
import com.massivecraft.factions.event.EventFactionsOpenChange;
|
||||
@ -24,7 +23,6 @@ public class CmdFactionsOpen extends FCommand
|
||||
this.addOptionalArg("yes/no", "toggle");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.OPEN.node));
|
||||
this.addRequirements(ReqHasFaction.get());
|
||||
this.addRequirements(ReqRoleIsAtLeast.get(Rel.OFFICER));
|
||||
|
@ -6,7 +6,6 @@ import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.arg.ARFPerm;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.arg.ARRel;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.massivecore.cmd.arg.ARBoolean;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
@ -31,7 +30,6 @@ public class CmdFactionsPerm extends FCommand
|
||||
this.setErrorOnToManyArgs(false);
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.PERM.node));
|
||||
}
|
||||
|
||||
@ -42,7 +40,7 @@ public class CmdFactionsPerm extends FCommand
|
||||
@Override
|
||||
public void perform()
|
||||
{
|
||||
Faction faction = this.arg(0, ARFaction.get(usenderFaction), usenderFaction);
|
||||
Faction faction = this.arg(0, ARFaction.get(), usenderFaction);
|
||||
if (faction == null) return;
|
||||
|
||||
if ( ! this.argIsSet(1))
|
||||
@ -88,7 +86,7 @@ public class CmdFactionsPerm extends FCommand
|
||||
faction.setRelationPermitted(perm, rel, val);
|
||||
|
||||
// The following is to make sure the leader always has the right to change perms if that is our goal.
|
||||
if (perm == FPerm.PERMS && FPerm.PERMS.getDefault(faction).contains(Rel.LEADER))
|
||||
if (perm == FPerm.PERMS && FPerm.PERMS.getDefault().contains(Rel.LEADER))
|
||||
{
|
||||
faction.setRelationPermitted(FPerm.PERMS, Rel.LEADER, true);
|
||||
}
|
||||
|
@ -4,8 +4,7 @@ import java.util.LinkedHashMap;
|
||||
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARUPlayer;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.massivecore.Progressbar;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
import com.massivecraft.massivecore.util.TimeDiffUtil;
|
||||
@ -27,7 +26,6 @@ public class CmdFactionsPlayer extends FCommand
|
||||
this.addOptionalArg("player", "you");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.PLAYER.node));
|
||||
}
|
||||
|
||||
@ -39,7 +37,7 @@ public class CmdFactionsPlayer extends FCommand
|
||||
public void perform()
|
||||
{
|
||||
// Args
|
||||
UPlayer uplayer = this.arg(0, ARUPlayer.getAny(sender), usender);
|
||||
MPlayer uplayer = this.arg(0, ARUPlayer.getAny(), usender);
|
||||
if (uplayer == null) return;
|
||||
|
||||
// INFO: Title
|
||||
|
@ -4,8 +4,7 @@ import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARUPlayer;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.massivecore.cmd.arg.ARDouble;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
@ -27,7 +26,6 @@ public class CmdFactionsPowerBoost extends FCommand
|
||||
this.addRequiredArg("#");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.POWERBOOST.node));
|
||||
}
|
||||
|
||||
@ -58,7 +56,7 @@ public class CmdFactionsPowerBoost extends FCommand
|
||||
|
||||
if (doPlayer)
|
||||
{
|
||||
UPlayer targetPlayer = this.arg(1, ARUPlayer.getAny(sender));
|
||||
MPlayer targetPlayer = this.arg(1, ARUPlayer.getAny());
|
||||
if (targetPlayer == null) return;
|
||||
|
||||
targetPlayer.setPowerBoost(targetPower);
|
||||
@ -66,7 +64,7 @@ public class CmdFactionsPowerBoost extends FCommand
|
||||
}
|
||||
else
|
||||
{
|
||||
Faction targetFaction = this.arg(1, ARFaction.get(sender));
|
||||
Faction targetFaction = this.arg(1, ARFaction.get());
|
||||
if (targetFaction == null) return;
|
||||
|
||||
targetFaction.setPowerBoost(targetPower);
|
||||
|
@ -3,8 +3,7 @@ package com.massivecraft.factions.cmd;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.arg.ARUPlayer;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
|
||||
public class CmdFactionsPromote extends FCommand
|
||||
@ -22,7 +21,6 @@ public class CmdFactionsPromote extends FCommand
|
||||
this.addRequiredArg("player");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.PROMOTE.node));
|
||||
|
||||
//To promote someone from recruit -> member you must be an officer.
|
||||
@ -37,7 +35,7 @@ public class CmdFactionsPromote extends FCommand
|
||||
@Override
|
||||
public void perform()
|
||||
{
|
||||
UPlayer you = this.arg(0, ARUPlayer.getAny(sender));
|
||||
MPlayer you = this.arg(0, ARUPlayer.getAny());
|
||||
if (you == null) return;
|
||||
|
||||
if (you.getFaction() != usenderFaction)
|
||||
|
@ -4,7 +4,6 @@ import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqHasFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqRoleIsAtLeast;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
@ -26,7 +25,6 @@ public abstract class CmdFactionsRelationAbstract extends FCommand
|
||||
this.addRequiredArg("faction");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.RELATION.node));
|
||||
this.addRequirements(ReqHasFaction.get());
|
||||
this.addRequirements(ReqRoleIsAtLeast.get(Rel.OFFICER));
|
||||
@ -40,7 +38,7 @@ public abstract class CmdFactionsRelationAbstract extends FCommand
|
||||
public void perform()
|
||||
{
|
||||
// Args
|
||||
Faction otherFaction = this.arg(0, ARFaction.get(sender));
|
||||
Faction otherFaction = this.arg(0, ARFaction.get());
|
||||
if (otherFaction == null) return;
|
||||
|
||||
Rel newRelation = targetRelation;
|
||||
|
@ -4,9 +4,8 @@ import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.event.EventFactionsHomeChange;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqIsPlayer;
|
||||
@ -27,7 +26,6 @@ public class CmdFactionsSethome extends FCommand
|
||||
this.addOptionalArg("faction", "you");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqIsPlayer.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.SETHOME.node));
|
||||
}
|
||||
@ -40,13 +38,13 @@ public class CmdFactionsSethome extends FCommand
|
||||
public void perform()
|
||||
{
|
||||
// Args
|
||||
Faction faction = this.arg(0, ARFaction.get(usenderFaction), usenderFaction);
|
||||
Faction faction = this.arg(0, ARFaction.get(), usenderFaction);
|
||||
if (faction == null) return;
|
||||
|
||||
PS newHome = PS.valueOf(me.getLocation());
|
||||
|
||||
// Validate
|
||||
if ( ! UConf.get(faction).homesEnabled)
|
||||
if ( ! MConf.get().homesEnabled)
|
||||
{
|
||||
usender.msg("<b>Sorry, Faction homes are disabled on this server.");
|
||||
return;
|
||||
|
@ -5,9 +5,8 @@ import org.bukkit.ChatColor;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.arg.ARUPlayer;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqRoleIsAtLeast;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.event.EventFactionsTitleChange;
|
||||
import com.massivecraft.massivecore.cmd.arg.ARString;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
@ -29,7 +28,6 @@ public class CmdFactionsTitle extends FCommand
|
||||
this.addOptionalArg("title", "");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.TITLE.node));
|
||||
this.addRequirements(ReqRoleIsAtLeast.get(Rel.OFFICER));
|
||||
}
|
||||
@ -42,7 +40,7 @@ public class CmdFactionsTitle extends FCommand
|
||||
public void perform()
|
||||
{
|
||||
// Args
|
||||
UPlayer you = this.arg(0, ARUPlayer.getAny(sender));
|
||||
MPlayer you = this.arg(0, ARUPlayer.getAny());
|
||||
if (you == null) return;
|
||||
|
||||
String newTitle = this.argConcatFrom(1, ARString.get(), "");
|
||||
|
@ -1,9 +1,8 @@
|
||||
package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqHasFaction;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.FactionColls;
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqIsPlayer;
|
||||
@ -21,7 +20,6 @@ public class CmdFactionsUnclaim extends FCommand
|
||||
this.addAliases("unclaim");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.UNCLAIM.node));
|
||||
this.addRequirements(ReqHasFaction.get());
|
||||
this.addRequirements(ReqIsPlayer.get());
|
||||
@ -36,7 +34,7 @@ public class CmdFactionsUnclaim extends FCommand
|
||||
{
|
||||
// Args
|
||||
PS chunk = PS.valueOf(me).getChunk(true);
|
||||
Faction newFaction = FactionColls.get().get(me).getNone();
|
||||
Faction newFaction = FactionColl.get().getNone();
|
||||
|
||||
// Apply
|
||||
if (usender.tryClaim(newFaction, chunk, true, true)) return;
|
||||
|
@ -6,13 +6,11 @@ import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.req.ReqFactionsEnabled;
|
||||
import com.massivecraft.factions.cmd.req.ReqHasFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqRoleIsAtLeast;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.BoardColls;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.FactionColls;
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.event.EventFactionsChunkChange;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
@ -30,7 +28,6 @@ public class CmdFactionsUnclaimall extends FCommand
|
||||
this.addAliases("unclaimall");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.UNCLAIM_ALL.node));
|
||||
this.addRequirements(ReqHasFaction.get());
|
||||
this.addRequirements(ReqRoleIsAtLeast.get(Rel.OFFICER));
|
||||
@ -45,14 +42,13 @@ public class CmdFactionsUnclaimall extends FCommand
|
||||
{
|
||||
// Args
|
||||
Faction faction = usenderFaction;
|
||||
Faction newFaction = FactionColls.get().get(faction).getNone();
|
||||
Faction newFaction = FactionColl.get().getNone();
|
||||
|
||||
// FPerm
|
||||
if (!FPerm.TERRITORY.has(usender, faction, true)) return;
|
||||
|
||||
// Apply
|
||||
BoardColl boardColl = BoardColls.get().get(faction);
|
||||
Set<PS> chunks = boardColl.getChunks(faction);
|
||||
Set<PS> chunks = BoardColl.get().getChunks(faction);
|
||||
int countTotal = chunks.size();
|
||||
int countSuccess = 0;
|
||||
int countFail = 0;
|
||||
@ -67,7 +63,7 @@ public class CmdFactionsUnclaimall extends FCommand
|
||||
else
|
||||
{
|
||||
countSuccess++;
|
||||
boardColl.setFactionAt(chunk, newFaction);
|
||||
BoardColl.get().setFactionAt(chunk, newFaction);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,8 +2,6 @@ package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.massivecore.cmd.MassiveCommand;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
@ -15,7 +13,7 @@ public abstract class FCommand extends MassiveCommand
|
||||
// -------------------------------------------- //
|
||||
|
||||
public MPlayer msender;
|
||||
public UPlayer usender;
|
||||
public MPlayer usender;
|
||||
public Faction usenderFaction;
|
||||
|
||||
// -------------------------------------------- //
|
||||
@ -30,10 +28,7 @@ public abstract class FCommand extends MassiveCommand
|
||||
this.usender = null;
|
||||
this.usenderFaction = null;
|
||||
|
||||
// Check disabled
|
||||
if (UConf.isDisabled(sender)) return;
|
||||
|
||||
this.usender = UPlayer.get(this.sender);
|
||||
this.usender = MPlayer.get(this.sender);
|
||||
this.usenderFaction = this.usender.getFaction();
|
||||
}
|
||||
|
||||
@ -50,7 +45,7 @@ public abstract class FCommand extends MassiveCommand
|
||||
// COMMONLY USED LOGIC
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean canIAdministerYou(UPlayer i, UPlayer you)
|
||||
public boolean canIAdministerYou(MPlayer i, MPlayer you)
|
||||
{
|
||||
if ( ! i.getFaction().equals(you.getFaction()))
|
||||
{
|
||||
|
@ -2,11 +2,9 @@ package com.massivecraft.factions.cmd.arg;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.UPlayerColls;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.factions.entity.FactionColls;
|
||||
import com.massivecraft.massivecore.cmd.arg.ArgReaderAbstract;
|
||||
import com.massivecraft.massivecore.cmd.arg.ArgResult;
|
||||
import com.massivecraft.massivecore.util.IdUtil;
|
||||
@ -18,18 +16,8 @@ public class ARFaction extends ArgReaderAbstract<Faction>
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static ARFaction get(Object universe) { return new ARFaction(FactionColls.get().get(universe)); }
|
||||
private ARFaction(FactionColl coll)
|
||||
{
|
||||
this.coll = coll;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELDS
|
||||
// -------------------------------------------- //
|
||||
|
||||
private final FactionColl coll;
|
||||
public FactionColl getColl() { return this.coll;}
|
||||
private static ARFaction i = new ARFaction();
|
||||
public static ARFaction get() { return i; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE
|
||||
@ -41,16 +29,16 @@ public class ARFaction extends ArgReaderAbstract<Faction>
|
||||
ArgResult<Faction> result = new ArgResult<Faction>();
|
||||
|
||||
// Faction Name Exact
|
||||
result.setResult(this.getColl().getByName(str));
|
||||
result.setResult(FactionColl.get().getByName(str));
|
||||
if (result.hasResult()) return result;
|
||||
|
||||
// Faction Name Match
|
||||
result.setResult(this.getColl().getBestNameMatch(str));
|
||||
result.setResult(FactionColl.get().getBestNameMatch(str));
|
||||
if (result.hasResult()) return result;
|
||||
|
||||
// UPlayer Name Exact
|
||||
String id = IdUtil.getId(str);
|
||||
UPlayer uplayer = UPlayerColls.get().get(this.getColl()).get(id);
|
||||
MPlayer uplayer = MPlayer.get(id);
|
||||
if (uplayer != null)
|
||||
{
|
||||
result.setResult(uplayer.getFaction());
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.massivecraft.factions.cmd.arg;
|
||||
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.UPlayerColls;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayerColl;
|
||||
import com.massivecraft.massivecore.cmd.arg.ArgReader;
|
||||
|
||||
public class ARUPlayer
|
||||
@ -10,8 +10,14 @@ public class ARUPlayer
|
||||
// INSTANCE
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static ArgReader<UPlayer> getAny(Object o) { return UPlayerColls.get().get(o).getAREntity(); }
|
||||
public static ArgReader<MPlayer> getAny()
|
||||
{
|
||||
return MPlayerColl.get().getAREntity();
|
||||
}
|
||||
|
||||
public static ArgReader<UPlayer> getOnline(Object o) { return UPlayerColls.get().get(o).getAREntity(true); }
|
||||
public static ArgReader<MPlayer> getOnline()
|
||||
{
|
||||
return MPlayerColl.get().getAREntity(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ package com.massivecraft.factions.cmd.req;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.massivecore.cmd.MassiveCommand;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqAbstract;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
@ -25,18 +25,17 @@ public class ReqBankCommandsEnabled extends ReqAbstract
|
||||
@Override
|
||||
public boolean apply(CommandSender sender, MassiveCommand command)
|
||||
{
|
||||
return UConf.get(sender).econEnabled && UConf.get(sender).bankEnabled;
|
||||
return MConf.get().econEnabled && MConf.get().bankEnabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createErrorMessage(CommandSender sender, MassiveCommand command)
|
||||
{
|
||||
UConf uconf = UConf.get(sender);
|
||||
if (!uconf.bankEnabled)
|
||||
if (!MConf.get().bankEnabled)
|
||||
{
|
||||
return Txt.parse("<b>Faction banks are disabled in the <h>%s <b>universe.", uconf.getUniverse());
|
||||
return Txt.parse("<b>Faction banks are disabled.");
|
||||
}
|
||||
return Txt.parse("<b>Faction economy features are disabled in the <h>%s <b>universe.", uconf.getUniverse());
|
||||
return Txt.parse("<b>Faction economy features are disabled.");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,36 +0,0 @@
|
||||
package com.massivecraft.factions.cmd.req;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.massivecore.cmd.MassiveCommand;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqAbstract;
|
||||
|
||||
public class ReqFactionsEnabled extends ReqAbstract
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
private static ReqFactionsEnabled i = new ReqFactionsEnabled();
|
||||
public static ReqFactionsEnabled get() { return i; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public boolean apply(CommandSender sender, MassiveCommand command)
|
||||
{
|
||||
return !UConf.isDisabled(sender);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createErrorMessage(CommandSender sender, MassiveCommand command)
|
||||
{
|
||||
return UConf.getDisabledMessage(sender);
|
||||
}
|
||||
|
||||
}
|
@ -2,7 +2,7 @@ package com.massivecraft.factions.cmd.req;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.massivecore.cmd.MassiveCommand;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqAbstract;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
@ -25,7 +25,7 @@ public class ReqHasFaction extends ReqAbstract
|
||||
@Override
|
||||
public boolean apply(CommandSender sender, MassiveCommand command)
|
||||
{
|
||||
return UPlayer.get(sender).hasFaction();
|
||||
return MPlayer.get(sender).hasFaction();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -2,7 +2,7 @@ package com.massivecraft.factions.cmd.req;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.massivecore.cmd.MassiveCommand;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqAbstract;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
@ -25,7 +25,7 @@ public class ReqHasntFaction extends ReqAbstract
|
||||
@Override
|
||||
public boolean apply(CommandSender sender, MassiveCommand command)
|
||||
{
|
||||
return !UPlayer.get(sender).hasFaction();
|
||||
return !MPlayer.get(sender).hasFaction();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -3,7 +3,7 @@ package com.massivecraft.factions.cmd.req;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.massivecore.cmd.MassiveCommand;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqAbstract;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
@ -33,7 +33,7 @@ public class ReqRoleIsAtLeast extends ReqAbstract
|
||||
@Override
|
||||
public boolean apply(CommandSender sender, MassiveCommand command)
|
||||
{
|
||||
UPlayer uplayer = UPlayer.get(sender);
|
||||
MPlayer uplayer = MPlayer.get(sender);
|
||||
return uplayer.getRole().isAtLeast(this.rel);
|
||||
}
|
||||
|
||||
|
@ -32,7 +32,7 @@ public class Board extends Entity<Board> implements BoardInterface
|
||||
|
||||
public static Board get(Object oid)
|
||||
{
|
||||
return BoardColls.get().get2(oid);
|
||||
return BoardColl.get().get(oid);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
@ -90,7 +90,7 @@ public class Board extends Entity<Board> implements BoardInterface
|
||||
if (ps == null) return null;
|
||||
ps = ps.getChunkCoords(true);
|
||||
TerritoryAccess ret = this.map.get(ps);
|
||||
if (ret == null) ret = TerritoryAccess.valueOf(UConf.get(this).factionIdNone);
|
||||
if (ret == null) ret = TerritoryAccess.valueOf(MConf.get().factionIdNone);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -109,7 +109,7 @@ public class Board extends Entity<Board> implements BoardInterface
|
||||
{
|
||||
ps = ps.getChunkCoords(true);
|
||||
|
||||
if (territoryAccess == null || (territoryAccess.getHostFactionId().equals(UConf.get(this).factionIdNone) && territoryAccess.isDefault()))
|
||||
if (territoryAccess == null || (territoryAccess.getHostFactionId().equals(MConf.get().factionIdNone) && territoryAccess.isDefault()))
|
||||
{
|
||||
this.map.remove(ps);
|
||||
}
|
||||
@ -159,13 +159,12 @@ public class Board extends Entity<Board> implements BoardInterface
|
||||
@Override
|
||||
public void clean()
|
||||
{
|
||||
FactionColl factionColl = FactionColls.get().get(this);
|
||||
|
||||
for (Entry<PS, TerritoryAccess> entry : this.map.entrySet())
|
||||
{
|
||||
TerritoryAccess territoryAccess = entry.getValue();
|
||||
String factionId = territoryAccess.getHostFactionId();
|
||||
if (factionColl.containsId(factionId)) continue;
|
||||
|
||||
if (FactionColl.get().containsId(factionId)) continue;
|
||||
|
||||
PS ps = entry.getKey();
|
||||
this.removeAt(ps);
|
||||
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.massivecraft.factions.Const;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.RelationParticipator;
|
||||
import com.massivecraft.factions.TerritoryAccess;
|
||||
@ -15,12 +16,14 @@ import com.massivecraft.massivecore.util.MUtil;
|
||||
public class BoardColl extends Coll<Board> implements BoardInterface
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// CONSTRUCT
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
public BoardColl(String name)
|
||||
private static BoardColl i = new BoardColl();
|
||||
public static BoardColl get() { return i; }
|
||||
private BoardColl()
|
||||
{
|
||||
super(name, Board.class, MStore.getDb(), Factions.get(), false, true, true);
|
||||
super(Const.COLLECTION_BOARD, Board.class, MStore.getDb(), Factions.get(), false, true, true);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
@ -165,4 +168,51 @@ public class BoardColl extends Coll<Board> implements BoardInterface
|
||||
return board.getMap(observer, centerPs, inDegrees);
|
||||
}
|
||||
|
||||
/*
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
super.init();
|
||||
|
||||
this.migrate();
|
||||
}
|
||||
|
||||
// This method is for the 1.8.X --> 2.0.0 migration
|
||||
public void migrate()
|
||||
{
|
||||
// Create file objects
|
||||
File oldFile = new File(Factions.get().getDataFolder(), "board.json");
|
||||
File newFile = new File(Factions.get().getDataFolder(), "board.json.migrated");
|
||||
|
||||
// Already migrated?
|
||||
if ( ! oldFile.exists()) return;
|
||||
|
||||
// Read the file content through GSON.
|
||||
Type type = new TypeToken<Map<String,Map<String,TerritoryAccess>>>(){}.getType();
|
||||
Map<String,Map<String,TerritoryAccess>> worldCoordIds = Factions.get().gson.fromJson(DiscUtil.readCatch(oldFile), type);
|
||||
|
||||
// Set the data
|
||||
for (Entry<String,Map<String,TerritoryAccess>> entry : worldCoordIds.entrySet())
|
||||
{
|
||||
String worldName = entry.getKey();
|
||||
BoardColl boardColl = this.getForWorld(worldName);
|
||||
Board board = boardColl.get(worldName);
|
||||
for (Entry<String,TerritoryAccess> entry2 : entry.getValue().entrySet())
|
||||
{
|
||||
String[] ChunkCoordParts = entry2.getKey().trim().split("[,\\s]+");
|
||||
int chunkX = Integer.parseInt(ChunkCoordParts[0]);
|
||||
int chunkZ = Integer.parseInt(ChunkCoordParts[1]);
|
||||
PS ps = new PSBuilder().chunkX(chunkX).chunkZ(chunkZ).build();
|
||||
|
||||
TerritoryAccess territoryAccess = entry2.getValue();
|
||||
|
||||
board.setTerritoryAccessAt(ps, territoryAccess);
|
||||
}
|
||||
}
|
||||
|
||||
// Mark as migrated
|
||||
oldFile.renameTo(newFile);
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
@ -1,215 +0,0 @@
|
||||
package com.massivecraft.factions.entity;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.massivecraft.factions.Const;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.RelationParticipator;
|
||||
import com.massivecraft.factions.TerritoryAccess;
|
||||
import com.massivecraft.massivecore.Aspect;
|
||||
import com.massivecraft.massivecore.ps.PS;
|
||||
import com.massivecraft.massivecore.ps.PSBuilder;
|
||||
import com.massivecraft.massivecore.util.DiscUtil;
|
||||
import com.massivecraft.massivecore.xlib.gson.reflect.TypeToken;
|
||||
|
||||
public class BoardColls extends XColls<BoardColl, Board> implements BoardInterface
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
private static BoardColls i = new BoardColls();
|
||||
public static BoardColls get() { return i; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE: COLLS
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public BoardColl createColl(String collName)
|
||||
{
|
||||
return new BoardColl(collName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Aspect getAspect()
|
||||
{
|
||||
return Factions.get().getAspect();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBasename()
|
||||
{
|
||||
return Const.COLLECTION_BOARD;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
super.init();
|
||||
|
||||
this.migrate();
|
||||
}
|
||||
|
||||
// This method is for the 1.8.X --> 2.0.0 migration
|
||||
public void migrate()
|
||||
{
|
||||
// Create file objects
|
||||
File oldFile = new File(Factions.get().getDataFolder(), "board.json");
|
||||
File newFile = new File(Factions.get().getDataFolder(), "board.json.migrated");
|
||||
|
||||
// Already migrated?
|
||||
if ( ! oldFile.exists()) return;
|
||||
|
||||
// Read the file content through GSON.
|
||||
Type type = new TypeToken<Map<String,Map<String,TerritoryAccess>>>(){}.getType();
|
||||
Map<String,Map<String,TerritoryAccess>> worldCoordIds = Factions.get().gson.fromJson(DiscUtil.readCatch(oldFile), type);
|
||||
|
||||
// Set the data
|
||||
for (Entry<String,Map<String,TerritoryAccess>> entry : worldCoordIds.entrySet())
|
||||
{
|
||||
String worldName = entry.getKey();
|
||||
BoardColl boardColl = this.getForWorld(worldName);
|
||||
Board board = boardColl.get(worldName);
|
||||
for (Entry<String,TerritoryAccess> entry2 : entry.getValue().entrySet())
|
||||
{
|
||||
String[] ChunkCoordParts = entry2.getKey().trim().split("[,\\s]+");
|
||||
int chunkX = Integer.parseInt(ChunkCoordParts[0]);
|
||||
int chunkZ = Integer.parseInt(ChunkCoordParts[1]);
|
||||
PS ps = new PSBuilder().chunkX(chunkX).chunkZ(chunkZ).build();
|
||||
|
||||
TerritoryAccess territoryAccess = entry2.getValue();
|
||||
|
||||
board.setTerritoryAccessAt(ps, territoryAccess);
|
||||
}
|
||||
}
|
||||
|
||||
// Mark as migrated
|
||||
oldFile.renameTo(newFile);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE: BOARD
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public TerritoryAccess getTerritoryAccessAt(PS ps)
|
||||
{
|
||||
BoardColl coll = this.getForWorld(ps.getWorld());
|
||||
if (coll == null) return null;
|
||||
return coll.getTerritoryAccessAt(ps);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Faction getFactionAt(PS ps)
|
||||
{
|
||||
BoardColl coll = this.getForWorld(ps.getWorld());
|
||||
if (coll == null) return null;
|
||||
return coll.getFactionAt(ps);
|
||||
}
|
||||
|
||||
// SET
|
||||
|
||||
@Override
|
||||
public void setTerritoryAccessAt(PS ps, TerritoryAccess territoryAccess)
|
||||
{
|
||||
BoardColl coll = this.getForWorld(ps.getWorld());
|
||||
if (coll == null) return;
|
||||
coll.setTerritoryAccessAt(ps, territoryAccess);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFactionAt(PS ps, Faction faction)
|
||||
{
|
||||
BoardColl coll = this.getForWorld(ps.getWorld());
|
||||
if (coll == null) return;
|
||||
coll.setFactionAt(ps, faction);
|
||||
}
|
||||
|
||||
// REMOVE
|
||||
|
||||
@Override
|
||||
public void removeAt(PS ps)
|
||||
{
|
||||
BoardColl coll = this.getForWorld(ps.getWorld());
|
||||
if (coll == null) return;
|
||||
coll.removeAt(ps);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAll(Faction faction)
|
||||
{
|
||||
for (BoardColl coll : this.getColls())
|
||||
{
|
||||
coll.removeAll(faction);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clean()
|
||||
{
|
||||
for (BoardColl coll : this.getColls())
|
||||
{
|
||||
coll.clean();
|
||||
}
|
||||
}
|
||||
|
||||
// CHUNKS
|
||||
@Override
|
||||
public Set<PS> getChunks(Faction faction)
|
||||
{
|
||||
Set<PS> ret = new HashSet<PS>();
|
||||
for (BoardColl coll : this.getColls())
|
||||
{
|
||||
ret.addAll(coll.getChunks(faction));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
// COUNT
|
||||
@Override
|
||||
public int getCount(Faction faction)
|
||||
{
|
||||
int ret = 0;
|
||||
for (BoardColl coll : this.getColls())
|
||||
{
|
||||
ret += coll.getCount(faction);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
// NEARBY DETECTION
|
||||
|
||||
@Override
|
||||
public boolean isBorderPs(PS ps)
|
||||
{
|
||||
BoardColl coll = this.getForWorld(ps.getWorld());
|
||||
if (coll == null) return false;
|
||||
return coll.isBorderPs(ps);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isConnectedPs(PS ps, Faction faction)
|
||||
{
|
||||
BoardColl coll = this.getForWorld(ps.getWorld());
|
||||
if (coll == null) return false;
|
||||
return coll.isConnectedPs(ps, faction);
|
||||
}
|
||||
|
||||
// MAP GENERATION
|
||||
|
||||
@Override
|
||||
public ArrayList<String> getMap(RelationParticipator observer, PS centerPs, double inDegrees)
|
||||
{
|
||||
BoardColl coll = this.getForWorld(centerPs.getWorld());
|
||||
if (coll == null) return null;
|
||||
return coll.getMap(observer, centerPs, inDegrees);
|
||||
}
|
||||
|
||||
}
|
@ -33,7 +33,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
|
||||
public static Faction get(Object oid)
|
||||
{
|
||||
return FactionColls.get().get2(oid);
|
||||
return FactionColl.get().get(oid);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
@ -62,13 +62,11 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
{
|
||||
Money.set(this, null, 0);
|
||||
|
||||
String universe = this.getUniverse();
|
||||
|
||||
// Clean the board
|
||||
BoardColls.get().getForUniverse(universe).clean();
|
||||
BoardColl.get().clean();
|
||||
|
||||
// Clean the uplayers
|
||||
UPlayerColls.get().getForUniverse(universe).clean();
|
||||
// Clean the mplayers
|
||||
MPlayerColl.get().clean();
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
@ -132,7 +130,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
|
||||
public boolean isNone()
|
||||
{
|
||||
return this.getId().equals(UConf.get(this).factionIdNone);
|
||||
return this.getId().equals(MConf.get().factionIdNone);
|
||||
}
|
||||
|
||||
public boolean isNormal()
|
||||
@ -150,8 +148,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
{
|
||||
String ret = this.name;
|
||||
|
||||
UConf uconf = UConf.get(this);
|
||||
if (uconf != null && UConf.get(this).factionNameForceUpperCase)
|
||||
if (MConf.get().factionNameForceUpperCase)
|
||||
{
|
||||
ret = ret.toUpperCase();
|
||||
}
|
||||
@ -277,8 +274,8 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
public boolean isValidHome(PS ps)
|
||||
{
|
||||
if (ps == null) return true;
|
||||
if (!UConf.get(this).homesMustBeInClaimedTerritory) return true;
|
||||
if (BoardColls.get().getFactionAt(ps) == this) return true;
|
||||
if (!MConf.get().homesMustBeInClaimedTerritory) return true;
|
||||
if (BoardColl.get().getFactionAt(ps) == this) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -338,9 +335,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
|
||||
public boolean isDefaultOpen()
|
||||
{
|
||||
UConf uconf = UConf.get(this);
|
||||
if (uconf == null) return false;
|
||||
return uconf.defaultFactionOpen;
|
||||
return MConf.get().defaultFactionOpen;
|
||||
}
|
||||
|
||||
public boolean isOpen()
|
||||
@ -412,7 +407,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
return this.getInvitedPlayerIds().contains(playerId);
|
||||
}
|
||||
|
||||
public boolean isInvited(UPlayer uplayer)
|
||||
public boolean isInvited(MPlayer uplayer)
|
||||
{
|
||||
return this.isInvited(uplayer.getId());
|
||||
}
|
||||
@ -434,7 +429,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
|
||||
}
|
||||
|
||||
public void setInvited(UPlayer uplayer, boolean invited)
|
||||
public void setInvited(MPlayer uplayer, boolean invited)
|
||||
{
|
||||
this.setInvited(uplayer.getId(), invited);
|
||||
}
|
||||
@ -523,7 +518,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
{
|
||||
ret.put(rel, new ArrayList<String>());
|
||||
}
|
||||
for (Faction faction : FactionColls.get().get(this).getAll())
|
||||
for (Faction faction : FactionColl.get().getAll())
|
||||
{
|
||||
Rel relation = faction.getRelationTo(this);
|
||||
if (onlyNonNeutral && relation == Rel.NEUTRAL) continue;
|
||||
@ -544,7 +539,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
|
||||
for (FFlag fflag : FFlag.values())
|
||||
{
|
||||
ret.put(fflag, fflag.getDefault(this));
|
||||
ret.put(fflag, fflag.getDefault());
|
||||
}
|
||||
|
||||
if (this.flags != null)
|
||||
@ -576,7 +571,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
while (iter.hasNext())
|
||||
{
|
||||
Entry<FFlag, Boolean> entry = iter.next();
|
||||
if (entry.getKey().getDefault(this) == entry.getValue())
|
||||
if (entry.getKey().getDefault() == entry.getValue())
|
||||
{
|
||||
iter.remove();
|
||||
}
|
||||
@ -621,7 +616,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
|
||||
for (FPerm fperm : FPerm.values())
|
||||
{
|
||||
ret.put(fperm, fperm.getDefault(this));
|
||||
ret.put(fperm, fperm.getDefault());
|
||||
}
|
||||
|
||||
if (this.perms != null)
|
||||
@ -667,7 +662,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
continue;
|
||||
}
|
||||
|
||||
Set<Rel> keyDefault = key.getDefault(this);
|
||||
Set<Rel> keyDefault = key.getDefault();
|
||||
Set<Rel> value = entry.getValue();
|
||||
|
||||
if (keyDefault.equals(value))
|
||||
@ -779,12 +774,12 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
if (this.getFlag(FFlag.INFPOWER)) return 999999;
|
||||
|
||||
double ret = 0;
|
||||
for (UPlayer uplayer : this.getUPlayers())
|
||||
for (MPlayer uplayer : this.getUPlayers())
|
||||
{
|
||||
ret += uplayer.getPower();
|
||||
}
|
||||
|
||||
double factionPowerMax = UConf.get(this).factionPowerMax;
|
||||
double factionPowerMax = MConf.get().factionPowerMax;
|
||||
if (factionPowerMax > 0 && ret > factionPowerMax)
|
||||
{
|
||||
ret = factionPowerMax;
|
||||
@ -800,12 +795,12 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
if (this.getFlag(FFlag.INFPOWER)) return 999999;
|
||||
|
||||
double ret = 0;
|
||||
for (UPlayer uplayer : this.getUPlayers())
|
||||
for (MPlayer uplayer : this.getUPlayers())
|
||||
{
|
||||
ret += uplayer.getPowerMax();
|
||||
}
|
||||
|
||||
double factionPowerMax = UConf.get(this).factionPowerMax;
|
||||
double factionPowerMax = MConf.get().factionPowerMax;
|
||||
if (factionPowerMax > 0 && ret > factionPowerMax)
|
||||
{
|
||||
ret = factionPowerMax;
|
||||
@ -828,7 +823,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
|
||||
public int getLandCount()
|
||||
{
|
||||
return BoardColls.get().get(this).getCount(this);
|
||||
return BoardColl.get().getCount(this);
|
||||
}
|
||||
public int getLandCountInWorld(String worldName)
|
||||
{
|
||||
@ -844,7 +839,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
// FOREIGN KEY: UPLAYER
|
||||
// -------------------------------------------- //
|
||||
|
||||
protected transient List<UPlayer> uplayers = new ArrayList<UPlayer>();
|
||||
protected transient List<MPlayer> uplayers = new ArrayList<MPlayer>();
|
||||
public void reindexUPlayers()
|
||||
{
|
||||
this.uplayers.clear();
|
||||
@ -852,10 +847,10 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
String factionId = this.getId();
|
||||
if (factionId == null) return;
|
||||
|
||||
for (UPlayer uplayer : UPlayerColls.get().get(this).getAll())
|
||||
for (MPlayer mplayer : MPlayerColl.get().getAll())
|
||||
{
|
||||
if (!MUtil.equals(factionId, uplayer.getFactionId())) continue;
|
||||
this.uplayers.add(uplayer);
|
||||
if (!MUtil.equals(factionId, mplayer.getFactionId())) continue;
|
||||
this.uplayers.add(mplayer);
|
||||
}
|
||||
}
|
||||
|
||||
@ -863,10 +858,10 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
// TODO: Find the bug causing non-attached UPlayers to be present in the index.
|
||||
private void checkUPlayerIndex()
|
||||
{
|
||||
Iterator<UPlayer> iter = this.uplayers.iterator();
|
||||
Iterator<MPlayer> iter = this.uplayers.iterator();
|
||||
while (iter.hasNext())
|
||||
{
|
||||
UPlayer uplayer = iter.next();
|
||||
MPlayer uplayer = iter.next();
|
||||
if (!uplayer.attached())
|
||||
{
|
||||
String msg = Txt.parse("<rose>WARN: <i>Faction <h>%s <i>aka <h>%s <i>had unattached uplayer in index:", this.getName(), this.getId());
|
||||
@ -877,19 +872,19 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
}
|
||||
}
|
||||
|
||||
public List<UPlayer> getUPlayers()
|
||||
public List<MPlayer> getUPlayers()
|
||||
{
|
||||
this.checkUPlayerIndex();
|
||||
return new ArrayList<UPlayer>(this.uplayers);
|
||||
return new ArrayList<MPlayer>(this.uplayers);
|
||||
}
|
||||
|
||||
public List<UPlayer> getUPlayersWhereOnline(boolean online)
|
||||
public List<MPlayer> getUPlayersWhereOnline(boolean online)
|
||||
{
|
||||
List<UPlayer> ret = this.getUPlayers();
|
||||
Iterator<UPlayer> iter = ret.iterator();
|
||||
List<MPlayer> ret = this.getUPlayers();
|
||||
Iterator<MPlayer> iter = ret.iterator();
|
||||
while (iter.hasNext())
|
||||
{
|
||||
UPlayer uplayer = iter.next();
|
||||
MPlayer uplayer = iter.next();
|
||||
if (uplayer.isOnline() != online)
|
||||
{
|
||||
iter.remove();
|
||||
@ -898,13 +893,13 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
return ret;
|
||||
}
|
||||
|
||||
public List<UPlayer> getUPlayersWhereRole(Rel role)
|
||||
public List<MPlayer> getUPlayersWhereRole(Rel role)
|
||||
{
|
||||
List<UPlayer> ret = this.getUPlayers();
|
||||
Iterator<UPlayer> iter = ret.iterator();
|
||||
List<MPlayer> ret = this.getUPlayers();
|
||||
Iterator<MPlayer> iter = ret.iterator();
|
||||
while (iter.hasNext())
|
||||
{
|
||||
UPlayer uplayer = iter.next();
|
||||
MPlayer uplayer = iter.next();
|
||||
if (uplayer.getRole() != role)
|
||||
{
|
||||
iter.remove();
|
||||
@ -913,13 +908,13 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
return ret;
|
||||
}
|
||||
|
||||
public UPlayer getLeader()
|
||||
public MPlayer getLeader()
|
||||
{
|
||||
List<UPlayer> ret = this.getUPlayers();
|
||||
Iterator<UPlayer> iter = ret.iterator();
|
||||
List<MPlayer> ret = this.getUPlayers();
|
||||
Iterator<MPlayer> iter = ret.iterator();
|
||||
while (iter.hasNext())
|
||||
{
|
||||
UPlayer uplayer = iter.next();
|
||||
MPlayer uplayer = iter.next();
|
||||
if (uplayer.getRole() == Rel.LEADER)
|
||||
{
|
||||
return uplayer;
|
||||
@ -933,7 +928,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
List<CommandSender> ret = new ArrayList<CommandSender>();
|
||||
for (CommandSender player : IdUtil.getOnlineSenders())
|
||||
{
|
||||
UPlayer uplayer = UPlayer.get(player);
|
||||
MPlayer uplayer = MPlayer.get(player);
|
||||
if (!MUtil.equals(uplayer.getUniverse(), this.getUniverse())) continue;
|
||||
if (uplayer.getFaction() != this) continue;
|
||||
ret.add(player);
|
||||
@ -946,7 +941,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
List<Player> ret = new ArrayList<Player>();
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
UPlayer uplayer = UPlayer.get(player);
|
||||
MPlayer uplayer = MPlayer.get(player);
|
||||
if (!MUtil.equals(uplayer.getUniverse(), this.getUniverse())) continue;
|
||||
if (uplayer.getFaction() != this) continue;
|
||||
ret.add(player);
|
||||
@ -958,12 +953,12 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
public void promoteNewLeader()
|
||||
{
|
||||
if ( ! this.isNormal()) return;
|
||||
if (this.getFlag(FFlag.PERMANENT) && UConf.get(this).permanentFactionsDisableLeaderPromotion) return;
|
||||
if (this.getFlag(FFlag.PERMANENT) && MConf.get().permanentFactionsDisableLeaderPromotion) return;
|
||||
|
||||
UPlayer oldLeader = this.getLeader();
|
||||
MPlayer oldLeader = this.getLeader();
|
||||
|
||||
// get list of officers, or list of normal members if there are no officers
|
||||
List<UPlayer> replacements = this.getUPlayersWhereRole(Rel.OFFICER);
|
||||
List<MPlayer> replacements = this.getUPlayersWhereRole(Rel.OFFICER);
|
||||
if (replacements == null || replacements.isEmpty())
|
||||
{
|
||||
replacements = this.getUPlayersWhereRole(Rel.MEMBER);
|
||||
@ -988,9 +983,9 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
Factions.get().log("The faction "+this.getName()+" ("+this.getId()+") has been disbanded since it has no members left.");
|
||||
}
|
||||
|
||||
for (UPlayer uplayer : UPlayerColls.get().get(this).getAllOnline())
|
||||
for (MPlayer mplayer : MPlayerColl.get().getAllOnline())
|
||||
{
|
||||
uplayer.msg("<i>The faction %s<i> was disbanded.", this.getName(uplayer));
|
||||
mplayer.msg("<i>The faction %s<i> was disbanded.", this.getName(mplayer));
|
||||
}
|
||||
|
||||
this.detach();
|
||||
|
@ -7,6 +7,7 @@ import org.bukkit.ChatColor;
|
||||
import com.massivecraft.massivecore.store.Coll;
|
||||
import com.massivecraft.massivecore.store.MStore;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
import com.massivecraft.factions.Const;
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Factions;
|
||||
@ -17,12 +18,14 @@ import com.massivecraft.factions.util.MiscUtil;
|
||||
public class FactionColl extends Coll<Faction>
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// CONSTRUCT
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
public FactionColl(String name)
|
||||
private static FactionColl i = new FactionColl();
|
||||
public static FactionColl get() { return i; }
|
||||
private FactionColl()
|
||||
{
|
||||
super(name, Faction.class, MStore.getDb(), Factions.get());
|
||||
super(Const.COLLECTION_FACTION, Faction.class, MStore.getDb(), Factions.get());
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
@ -50,8 +53,8 @@ public class FactionColl extends Coll<Faction>
|
||||
String message = Txt.parse("<b>Non existing factionId <h>%s <b>requested. <i>Cleaning all boards and uplayers.", this.fixId(oid));
|
||||
Factions.get().log(message);
|
||||
|
||||
BoardColls.get().clean();
|
||||
UPlayerColls.get().clean();
|
||||
BoardColl.get().clean();
|
||||
MPlayerColl.get().clean();
|
||||
}
|
||||
|
||||
return ret;
|
||||
@ -82,7 +85,7 @@ public class FactionColl extends Coll<Faction>
|
||||
|
||||
public Faction getNone()
|
||||
{
|
||||
String id = UConf.get(this).factionIdNone;
|
||||
String id = MConf.get().factionIdNone;
|
||||
Faction faction = this.get(id);
|
||||
if (faction != null) return faction;
|
||||
|
||||
@ -115,7 +118,7 @@ public class FactionColl extends Coll<Faction>
|
||||
|
||||
public Faction getSafezone()
|
||||
{
|
||||
String id = UConf.get(this).factionIdSafezone;
|
||||
String id = MConf.get().factionIdSafezone;
|
||||
Faction faction = this.get(id);
|
||||
if (faction != null) return faction;
|
||||
|
||||
@ -148,7 +151,7 @@ public class FactionColl extends Coll<Faction>
|
||||
|
||||
public Faction getWarzone()
|
||||
{
|
||||
String id = UConf.get(this).factionIdWarzone;
|
||||
String id = MConf.get().factionIdWarzone;
|
||||
Faction faction = this.get(id);
|
||||
if (faction != null) return faction;
|
||||
|
||||
@ -185,9 +188,9 @@ public class FactionColl extends Coll<Faction>
|
||||
|
||||
public void econLandRewardRoutine()
|
||||
{
|
||||
if (!Econ.isEnabled(this.getUniverse())) return;
|
||||
if (!Econ.isEnabled()) return;
|
||||
|
||||
double econLandReward = UConf.get(this).econLandReward;
|
||||
double econLandReward = MConf.get().econLandReward;
|
||||
if (econLandReward == 0.0) return;
|
||||
|
||||
Factions.get().log("Running econLandRewardRoutine...");
|
||||
@ -196,10 +199,10 @@ public class FactionColl extends Coll<Faction>
|
||||
int landCount = faction.getLandCount();
|
||||
if (!faction.getFlag(FFlag.PEACEFUL) && landCount > 0)
|
||||
{
|
||||
List<UPlayer> players = faction.getUPlayers();
|
||||
List<MPlayer> players = faction.getUPlayers();
|
||||
int playerCount = players.size();
|
||||
double reward = econLandReward * landCount / playerCount;
|
||||
for (UPlayer player : players)
|
||||
for (MPlayer player : players)
|
||||
{
|
||||
Econ.modifyMoney(player, reward, "own " + landCount + " faction land divided among " + playerCount + " members");
|
||||
}
|
||||
@ -215,14 +218,14 @@ public class FactionColl extends Coll<Faction>
|
||||
{
|
||||
ArrayList<String> errors = new ArrayList<String>();
|
||||
|
||||
if (MiscUtil.getComparisonString(str).length() < UConf.get(this).factionNameLengthMin)
|
||||
if (MiscUtil.getComparisonString(str).length() < MConf.get().factionNameLengthMin)
|
||||
{
|
||||
errors.add(Txt.parse("<i>The faction name can't be shorter than <h>%s<i> chars.", UConf.get(this).factionNameLengthMin));
|
||||
errors.add(Txt.parse("<i>The faction name can't be shorter than <h>%s<i> chars.", MConf.get().factionNameLengthMin));
|
||||
}
|
||||
|
||||
if (str.length() > UConf.get(this).factionNameLengthMax)
|
||||
if (str.length() > MConf.get().factionNameLengthMax)
|
||||
{
|
||||
errors.add(Txt.parse("<i>The faction name can't be longer than <h>%s<i> chars.", UConf.get(this).factionNameLengthMax));
|
||||
errors.add(Txt.parse("<i>The faction name can't be longer than <h>%s<i> chars.", MConf.get().factionNameLengthMax));
|
||||
}
|
||||
|
||||
for (char c : str.toCharArray())
|
||||
@ -269,4 +272,61 @@ public class FactionColl extends Coll<Faction>
|
||||
return this.getByName(str) != null;
|
||||
}
|
||||
|
||||
/*
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
super.init();
|
||||
|
||||
this.migrate();
|
||||
}
|
||||
|
||||
// This method is for the 1.8.X --> 2.0.0 migration
|
||||
public void migrate()
|
||||
{
|
||||
// Create file objects
|
||||
File oldFile = new File(Factions.get().getDataFolder(), "factions.json");
|
||||
File newFile = new File(Factions.get().getDataFolder(), "factions.json.migrated");
|
||||
|
||||
// Already migrated?
|
||||
if ( ! oldFile.exists()) return;
|
||||
|
||||
// Faction ids /delete
|
||||
// For simplicity we just drop the old special factions.
|
||||
// They will be replaced with new autogenerated ones per universe.
|
||||
Set<String> factionIdsToDelete = MUtil.set("0", "-1", "-2");
|
||||
|
||||
// Read the file content through GSON.
|
||||
Type type = new TypeToken<Map<String, Faction>>(){}.getType();
|
||||
Map<String, Faction> id2faction = Factions.get().gson.fromJson(DiscUtil.readCatch(oldFile), type);
|
||||
|
||||
// The Coll
|
||||
FactionColl coll = this.getForUniverse(MassiveCore.DEFAULT);
|
||||
|
||||
// Set the data
|
||||
for (Entry<String, Faction> entry : id2faction.entrySet())
|
||||
{
|
||||
String factionId = entry.getKey();
|
||||
if (factionIdsToDelete.contains(factionId)) continue;
|
||||
Faction faction = entry.getValue();
|
||||
coll.attach(faction, factionId);
|
||||
}
|
||||
|
||||
// Mark as migrated
|
||||
oldFile.renameTo(newFile);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// INDEX
|
||||
// -------------------------------------------- //
|
||||
|
||||
public void reindexUPlayers()
|
||||
{
|
||||
for (FactionColl coll : this.getColls())
|
||||
{
|
||||
coll.reindexUPlayers();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
@ -1,103 +0,0 @@
|
||||
package com.massivecraft.factions.entity;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import com.massivecraft.factions.Const;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.massivecore.Aspect;
|
||||
import com.massivecraft.massivecore.MassiveCore;
|
||||
import com.massivecraft.massivecore.util.DiscUtil;
|
||||
import com.massivecraft.massivecore.util.MUtil;
|
||||
import com.massivecraft.massivecore.xlib.gson.reflect.TypeToken;
|
||||
|
||||
public class FactionColls extends XColls<FactionColl, Faction>
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
private static FactionColls i = new FactionColls();
|
||||
public static FactionColls get() { return i; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE: COLLS
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public FactionColl createColl(String collName)
|
||||
{
|
||||
return new FactionColl(collName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Aspect getAspect()
|
||||
{
|
||||
return Factions.get().getAspect();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBasename()
|
||||
{
|
||||
return Const.COLLECTION_FACTION;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
super.init();
|
||||
|
||||
this.migrate();
|
||||
}
|
||||
|
||||
// This method is for the 1.8.X --> 2.0.0 migration
|
||||
public void migrate()
|
||||
{
|
||||
// Create file objects
|
||||
File oldFile = new File(Factions.get().getDataFolder(), "factions.json");
|
||||
File newFile = new File(Factions.get().getDataFolder(), "factions.json.migrated");
|
||||
|
||||
// Already migrated?
|
||||
if ( ! oldFile.exists()) return;
|
||||
|
||||
// Faction ids /delete
|
||||
// For simplicity we just drop the old special factions.
|
||||
// They will be replaced with new autogenerated ones per universe.
|
||||
Set<String> factionIdsToDelete = MUtil.set("0", "-1", "-2");
|
||||
|
||||
// Read the file content through GSON.
|
||||
Type type = new TypeToken<Map<String, Faction>>(){}.getType();
|
||||
Map<String, Faction> id2faction = Factions.get().gson.fromJson(DiscUtil.readCatch(oldFile), type);
|
||||
|
||||
// The Coll
|
||||
FactionColl coll = this.getForUniverse(MassiveCore.DEFAULT);
|
||||
|
||||
// Set the data
|
||||
for (Entry<String, Faction> entry : id2faction.entrySet())
|
||||
{
|
||||
String factionId = entry.getKey();
|
||||
if (factionIdsToDelete.contains(factionId)) continue;
|
||||
Faction faction = entry.getValue();
|
||||
coll.attach(faction, factionId);
|
||||
}
|
||||
|
||||
// Mark as migrated
|
||||
oldFile.renameTo(newFile);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// INDEX
|
||||
// -------------------------------------------- //
|
||||
|
||||
public void reindexUPlayers()
|
||||
{
|
||||
for (FactionColl coll : this.getColls())
|
||||
{
|
||||
coll.reindexUPlayers();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,18 +1,24 @@
|
||||
package com.massivecraft.factions.entity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.event.EventFactionsChunkChangeType;
|
||||
import com.massivecraft.factions.integration.dynmap.DynmapStyle;
|
||||
import com.massivecraft.factions.listeners.FactionsListenerChat;
|
||||
import com.massivecraft.massivecore.store.Entity;
|
||||
@ -64,6 +70,54 @@ public class MConf extends Entity<MConf>
|
||||
public boolean removePlayerDataWhenBanned = true;
|
||||
public double removePlayerDataAfterInactiveDays = 20.0;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// SPECIAL FACTION IDS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public String factionIdNone = UUID.randomUUID().toString();
|
||||
public String factionIdSafezone = UUID.randomUUID().toString();
|
||||
public String factionIdWarzone = UUID.randomUUID().toString();
|
||||
|
||||
// -------------------------------------------- //
|
||||
// DEFAULTS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public String defaultPlayerFactionId = this.factionIdNone;
|
||||
public Rel defaultPlayerRole = Rel.RECRUIT;
|
||||
public double defaultPlayerPower = 0.0;
|
||||
|
||||
public boolean defaultFactionOpen = false;
|
||||
public Map<FFlag, Boolean> defaultFactionFlags = FFlag.getDefaultDefaults();
|
||||
public Map<FPerm, Set<Rel>> defaultFactionPerms = FPerm.getDefaultDefaults();
|
||||
|
||||
// -------------------------------------------- //
|
||||
// POWER
|
||||
// -------------------------------------------- //
|
||||
|
||||
public double powerMax = 10.0;
|
||||
public double powerMin = 0.0;
|
||||
public double powerPerHour = 2.0;
|
||||
public double powerPerDeath = -2.0;
|
||||
|
||||
public boolean canLeaveWithNegativePower = true;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CORE
|
||||
// -------------------------------------------- //
|
||||
|
||||
public int factionMemberLimit = 0;
|
||||
public double factionPowerMax = 0.0;
|
||||
|
||||
public int factionNameLengthMin = 3;
|
||||
public int factionNameLengthMax = 16;
|
||||
public boolean factionNameForceUpperCase = false;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// MESSAGES
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean broadcastNameChange = false;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CLAIM LIMITS
|
||||
// -------------------------------------------- //
|
||||
@ -74,6 +128,110 @@ public class MConf extends Entity<MConf>
|
||||
// the maximum radius allowed when using the claim command.
|
||||
public int radiusClaimRadiusLimit = 5;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CLAIMS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean claimsMustBeConnected = true;
|
||||
public boolean claimingFromOthersAllowed = true;
|
||||
public boolean claimsCanBeUnconnectedIfOwnedByOtherFaction = false;
|
||||
public int claimsRequireMinFactionMembers = 1;
|
||||
public int claimedLandsMax = 0;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// HOMES
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean homesEnabled = true;
|
||||
public boolean homesMustBeInClaimedTerritory = true;
|
||||
public boolean homesTeleportCommandEnabled = true;
|
||||
public boolean homesTeleportAllowedFromEnemyTerritory = true;
|
||||
public boolean homesTeleportAllowedFromDifferentWorld = true;
|
||||
public double homesTeleportAllowedEnemyDistance = 32.0;
|
||||
public boolean homesTeleportIgnoreEnemiesIfInOwnTerritory = true;
|
||||
|
||||
public boolean homesTeleportToOnDeathActive = false;
|
||||
public EventPriority homesTeleportToOnDeathPriority = EventPriority.NORMAL;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// ASSORTED
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean permanentFactionsDisableLeaderPromotion = false;
|
||||
public double actionDeniedPainAmount = 2.0D;
|
||||
public boolean disablePVPForFactionlessPlayers = false;
|
||||
public boolean enablePVPAgainstFactionlessInAttackersLand = false;
|
||||
public double territoryShieldFactor = 0.3D;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// DENY COMMANDS
|
||||
// -------------------------------------------- //
|
||||
|
||||
// commands which will be prevented if the player is a member of a permanent faction
|
||||
public List<String> denyCommandsPermanentFactionMember = new ArrayList<String>();
|
||||
|
||||
// commands which will be prevented when in claimed territory of another faction
|
||||
public Map<Rel, List<String>> denyCommandsTerritoryRelation = MUtil.map(
|
||||
Rel.ENEMY, MUtil.list(
|
||||
// Essentials commands
|
||||
"home",
|
||||
"homes",
|
||||
"sethome",
|
||||
"createhome",
|
||||
"tpahere",
|
||||
"tpaccept",
|
||||
"tpyes",
|
||||
"tpa",
|
||||
"call",
|
||||
"tpask",
|
||||
"warp",
|
||||
"warps",
|
||||
"spawn",
|
||||
// Essentials e-alliases
|
||||
"ehome",
|
||||
"ehomes",
|
||||
"esethome",
|
||||
"ecreatehome",
|
||||
"etpahere",
|
||||
"etpaccept",
|
||||
"etpyes",
|
||||
"etpa",
|
||||
"ecall",
|
||||
"etpask",
|
||||
"ewarp",
|
||||
"ewarps",
|
||||
"espawn",
|
||||
// Essentials fallback alliases
|
||||
"essentials:home",
|
||||
"essentials:homes",
|
||||
"essentials:sethome",
|
||||
"essentials:createhome",
|
||||
"essentials:tpahere",
|
||||
"essentials:tpaccept",
|
||||
"essentials:tpyes",
|
||||
"essentials:tpa",
|
||||
"essentials:call",
|
||||
"essentials:tpask",
|
||||
"essentials:warp",
|
||||
"essentials:warps",
|
||||
"essentials:spawn",
|
||||
// Other plugins
|
||||
"wtp",
|
||||
"uspawn",
|
||||
"utp",
|
||||
"mspawn",
|
||||
"mtp",
|
||||
"fspawn",
|
||||
"ftp",
|
||||
"jspawn",
|
||||
"jtp"
|
||||
),
|
||||
Rel.NEUTRAL, new ArrayList<String>(),
|
||||
Rel.TRUCE, new ArrayList<String>(),
|
||||
Rel.ALLY, new ArrayList<String>(),
|
||||
Rel.MEMBER, new ArrayList<String>()
|
||||
);
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CHAT
|
||||
// -------------------------------------------- //
|
||||
@ -87,28 +245,6 @@ public class MConf extends Entity<MConf>
|
||||
public boolean chatParseTags = true;
|
||||
public EventPriority chatParseTagsAt = EventPriority.LOW;
|
||||
|
||||
// HeroChat: The Faction Channel
|
||||
public String herochatFactionName = "Faction";
|
||||
public String herochatFactionNick = "F";
|
||||
public String herochatFactionFormat = "{color}[&l{nick}&r{color} &l{factions_roleprefix}&r{color}{factions_title|rp}{sender}{color}] &f{msg}";
|
||||
public ChatColor herochatFactionColor = ChatColor.GREEN;
|
||||
public int herochatFactionDistance = 0;
|
||||
public boolean herochatFactionIsShortcutAllowed = false;
|
||||
public boolean herochatFactionCrossWorld = true;
|
||||
public boolean herochatFactionMuted = false;
|
||||
public Set<String> herochatFactionWorlds = new HashSet<String>();
|
||||
|
||||
// HeroChat: The Allies Channel
|
||||
public String herochatAlliesName = "Allies";
|
||||
public String herochatAlliesNick = "A";
|
||||
public String herochatAlliesFormat = "{color}[&l{nick}&r&f {factions_relcolor}&l{factions_roleprefix}&r{factions_relcolor}{factions_name|rp}{sender}{color}] &f{msg}";
|
||||
public ChatColor herochatAlliesColor = ChatColor.DARK_PURPLE;
|
||||
public int herochatAlliesDistance = 0;
|
||||
public boolean herochatAlliesIsShortcutAllowed = false;
|
||||
public boolean herochatAlliesCrossWorld = true;
|
||||
public boolean herochatAlliesMuted = false;
|
||||
public Set<String> herochatAlliesWorlds = new HashSet<String>();
|
||||
|
||||
// -------------------------------------------- //
|
||||
// COLORS
|
||||
// -------------------------------------------- //
|
||||
@ -250,7 +386,88 @@ public class MConf extends Entity<MConf>
|
||||
);
|
||||
|
||||
// -------------------------------------------- //
|
||||
// DYNMAP
|
||||
// INTEGRATION: HeroChat
|
||||
// -------------------------------------------- //
|
||||
|
||||
// HeroChat: The Faction Channel
|
||||
public String herochatFactionName = "Faction";
|
||||
public String herochatFactionNick = "F";
|
||||
public String herochatFactionFormat = "{color}[&l{nick}&r{color} &l{factions_roleprefix}&r{color}{factions_title|rp}{sender}{color}] &f{msg}";
|
||||
public ChatColor herochatFactionColor = ChatColor.GREEN;
|
||||
public int herochatFactionDistance = 0;
|
||||
public boolean herochatFactionIsShortcutAllowed = false;
|
||||
public boolean herochatFactionCrossWorld = true;
|
||||
public boolean herochatFactionMuted = false;
|
||||
public Set<String> herochatFactionWorlds = new HashSet<String>();
|
||||
|
||||
// HeroChat: The Allies Channel
|
||||
public String herochatAlliesName = "Allies";
|
||||
public String herochatAlliesNick = "A";
|
||||
public String herochatAlliesFormat = "{color}[&l{nick}&r&f {factions_relcolor}&l{factions_roleprefix}&r{factions_relcolor}{factions_name|rp}{sender}{color}] &f{msg}";
|
||||
public ChatColor herochatAlliesColor = ChatColor.DARK_PURPLE;
|
||||
public int herochatAlliesDistance = 0;
|
||||
public boolean herochatAlliesIsShortcutAllowed = false;
|
||||
public boolean herochatAlliesCrossWorld = true;
|
||||
public boolean herochatAlliesMuted = false;
|
||||
public Set<String> herochatAlliesWorlds = new HashSet<String>();
|
||||
|
||||
// -------------------------------------------- //
|
||||
// INTEGRATION: LWC
|
||||
// -------------------------------------------- //
|
||||
|
||||
public Map<EventFactionsChunkChangeType, Boolean> lwcRemoveOnChange = MUtil.map(
|
||||
EventFactionsChunkChangeType.BUY, false,
|
||||
EventFactionsChunkChangeType.SELL, false,
|
||||
EventFactionsChunkChangeType.CONQUER, false,
|
||||
EventFactionsChunkChangeType.PILLAGE, false
|
||||
);
|
||||
|
||||
// -------------------------------------------- //
|
||||
// INTEGRATION: ECONOMY
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean econEnabled = false;
|
||||
|
||||
// TODO: Rename to include unit.
|
||||
public double econLandReward = 0.00;
|
||||
|
||||
public String econUniverseAccount = "";
|
||||
|
||||
public Map<EventFactionsChunkChangeType, Double> econChunkCost = MUtil.map(
|
||||
EventFactionsChunkChangeType.BUY, 30.0,
|
||||
EventFactionsChunkChangeType.SELL, -20.0,
|
||||
EventFactionsChunkChangeType.CONQUER, -10.0,
|
||||
EventFactionsChunkChangeType.PILLAGE, -10.0
|
||||
);
|
||||
|
||||
public double econCostCreate = 200.0;
|
||||
public double econCostSethome = 0.0;
|
||||
public double econCostJoin = 0.0;
|
||||
public double econCostLeave = 0.0;
|
||||
public double econCostKick = 0.0;
|
||||
public double econCostInvite = 0.0;
|
||||
public double econCostDeinvite = 0.0;
|
||||
public double econCostHome = 0.0;
|
||||
public double econCostName = 0.0;
|
||||
public double econCostDescription = 0.0;
|
||||
public double econCostTitle = 0.0;
|
||||
public double econCostOpen = 0.0;
|
||||
|
||||
public Map<Rel, Double> econRelCost = MUtil.map(
|
||||
Rel.ENEMY, 0.0,
|
||||
Rel.ALLY, 0.0,
|
||||
Rel.TRUCE, 0.0,
|
||||
Rel.NEUTRAL, 0.0
|
||||
);
|
||||
|
||||
//Faction banks, to pay for land claiming and other costs instead of individuals paying for them
|
||||
public boolean bankEnabled = true;
|
||||
//public static boolean bankMembersCanWithdraw = false; //Have to be at least moderator to withdraw or pay money to another faction
|
||||
public boolean bankFactionPaysCosts = true; //The faction pays for faction command costs, such as sethome
|
||||
public boolean bankFactionPaysLandCosts = true; //The faction pays for land claiming costs.
|
||||
|
||||
// -------------------------------------------- //
|
||||
// INTEGRATION: DYNMAP
|
||||
// -------------------------------------------- //
|
||||
|
||||
// Should the dynmap intagration be used?
|
||||
|
@ -27,7 +27,6 @@ public class MConfColl extends Coll<MConf>
|
||||
public void init()
|
||||
{
|
||||
super.init();
|
||||
|
||||
MConf.i = this.get(MassiveCore.INSTANCE, true);
|
||||
}
|
||||
|
||||
|
@ -1,9 +1,33 @@
|
||||
package com.massivecraft.factions.entity;
|
||||
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.massivecore.store.SenderEntity;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class MPlayer extends SenderEntity<MPlayer>
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.massivecraft.factions.EconomyParticipator;
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Lang;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.RelationParticipator;
|
||||
import com.massivecraft.factions.event.EventFactionsChunkChange;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange.MembershipChangeReason;
|
||||
import com.massivecraft.factions.util.RelationUtil;
|
||||
import com.massivecraft.massivecore.mixin.Mixin;
|
||||
import com.massivecraft.massivecore.ps.PS;
|
||||
import com.massivecraft.massivecore.ps.PSFormatHumanSpace;
|
||||
import com.massivecraft.massivecore.store.SenderEntity;
|
||||
import com.massivecraft.massivecore.util.IdUtil;
|
||||
import com.massivecraft.massivecore.util.MUtil;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
|
||||
|
||||
public class MPlayer extends SenderEntity<MPlayer> implements EconomyParticipator
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// META
|
||||
@ -15,14 +39,19 @@ public class MPlayer extends SenderEntity<MPlayer>
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE
|
||||
// OVERRIDE: ENTITY
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public MPlayer load(MPlayer that)
|
||||
{
|
||||
this.mapAutoUpdating = that.mapAutoUpdating;
|
||||
this.usingAdminMode = that.usingAdminMode;
|
||||
this.setFactionId(that.factionId);
|
||||
this.setRole(that.role);
|
||||
this.setTitle(that.title);
|
||||
this.setPowerBoost(that.powerBoost);
|
||||
this.setPower(that.power);
|
||||
this.setMapAutoUpdating(that.mapAutoUpdating);
|
||||
this.setUsingAdminMode(that.usingAdminMode);
|
||||
|
||||
return this;
|
||||
}
|
||||
@ -30,30 +59,770 @@ public class MPlayer extends SenderEntity<MPlayer>
|
||||
@Override
|
||||
public boolean isDefault()
|
||||
{
|
||||
if (this.hasFaction()) return false;
|
||||
// Role means nothing without a faction.
|
||||
// Title means nothing without a faction.
|
||||
if (this.getPowerRounded() != (int) Math.round(MConf.get().defaultPlayerPower)) return false;
|
||||
if (this.isMapAutoUpdating()) return false;
|
||||
if (this.isUsingAdminMode()) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postAttach(String id)
|
||||
{
|
||||
// If inited ...
|
||||
if (!Factions.get().isDatabaseInitialized()) return;
|
||||
|
||||
// ... update the index.
|
||||
Faction faction = this.getFaction();
|
||||
faction.uplayers.add(this);
|
||||
|
||||
//Factions.get().log(Txt.parse("<g>postAttach added <h>%s <i>aka <h>%s <i>to <h>%s <i>aka <h>%s<i>.", id, Mixin.getDisplayName(id), faction.getId(), faction.getName()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preDetach(String id)
|
||||
{
|
||||
// If inited ...
|
||||
if (!Factions.get().isDatabaseInitialized()) return;
|
||||
|
||||
// ... update the index.
|
||||
Faction faction = this.getFaction();
|
||||
faction.uplayers.remove(this);
|
||||
|
||||
//Factions.get().log(Txt.parse("<b>preDetach removed <h>%s <i>aka <h>%s <i>to <h>%s <i>aka <h>%s<i>.", id, Mixin.getDisplayName(id), faction.getId(), faction.getName()));
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELDS
|
||||
// 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.
|
||||
|
||||
// This is a foreign key.
|
||||
// Each player belong to a faction.
|
||||
// Null means default for the universe.
|
||||
private String factionId = null;
|
||||
|
||||
// What role does the player have in the faction?
|
||||
// Null means default for the universe.
|
||||
private Rel role = null;
|
||||
|
||||
// What title does the player have in the faction?
|
||||
// The title is just for fun. It's not connected to any game mechanic.
|
||||
// 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 the title contains raw markup, such as "<white>" instead of "§f" it will not be parsed and "<white>" will be displayed.
|
||||
//
|
||||
// Null means the player has no title.
|
||||
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;
|
||||
|
||||
// Each player has an individual power level.
|
||||
// The power level for online players is occasionally updated by a recurring task and the power should stay the same for offline players.
|
||||
// For that reason the value is to be considered correct when you pick it. Do not call the power update method.
|
||||
// Null means default for the universe.
|
||||
private Double power = null;
|
||||
|
||||
// Has this player requested an auto-updating ascii art map?
|
||||
// Null means false
|
||||
private Boolean mapAutoUpdating = null;
|
||||
|
||||
// Is this player using admin mode?
|
||||
// Null means false
|
||||
private Boolean usingAdminMode = null;
|
||||
|
||||
// The id for the faction this uplayer is currently autoclaiming for.
|
||||
// NOTE: This field will not be saved to the database ever.
|
||||
// Null means the player isn't auto claiming.
|
||||
private transient Faction autoClaimFaction = null;
|
||||
public Faction getAutoClaimFaction() { return this.autoClaimFaction; }
|
||||
public void setAutoClaimFaction(Faction autoClaimFaction) { this.autoClaimFaction = autoClaimFaction; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CORE UTILITIES
|
||||
// -------------------------------------------- //
|
||||
|
||||
private boolean mapAutoUpdating = false;
|
||||
public boolean isMapAutoUpdating() { return this.mapAutoUpdating; }
|
||||
public void setMapAutoUpdating(boolean mapAutoUpdating) { this.mapAutoUpdating = mapAutoUpdating; this.changed(); }
|
||||
public void resetFactionData()
|
||||
{
|
||||
// The default neutral faction
|
||||
this.setFactionId(null);
|
||||
this.setRole(null);
|
||||
this.setTitle(null);
|
||||
this.setAutoClaimFaction(null);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELD: factionId
|
||||
// -------------------------------------------- //
|
||||
|
||||
public String getDefaultFactionId()
|
||||
{
|
||||
return MConf.get().defaultPlayerFactionId;
|
||||
}
|
||||
|
||||
// This method never returns null
|
||||
public String getFactionId()
|
||||
{
|
||||
if (this.factionId == null) return this.getDefaultFactionId();
|
||||
return this.factionId;
|
||||
}
|
||||
|
||||
// This method never returns null
|
||||
public Faction getFaction()
|
||||
{
|
||||
Faction ret = Faction.get(this.getFactionId());
|
||||
if (ret == null) ret = Faction.get(MConf.get().defaultPlayerFactionId);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public boolean hasFaction()
|
||||
{
|
||||
return !this.getFactionId().equals(MConf.get().factionIdNone);
|
||||
}
|
||||
|
||||
// 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)
|
||||
{
|
||||
// Clean input
|
||||
String target = factionId;
|
||||
|
||||
// Detect Nochange
|
||||
if (MUtil.equals(this.factionId, target)) return;
|
||||
|
||||
// Get the raw old value
|
||||
String oldFactionId = this.factionId;
|
||||
|
||||
// Apply
|
||||
this.factionId = target;
|
||||
|
||||
// Must be attached and initialized
|
||||
if (!this.attached()) return;
|
||||
if (!Factions.get().isDatabaseInitialized()) return;
|
||||
|
||||
if (oldFactionId == null) oldFactionId = this.getDefaultFactionId();
|
||||
|
||||
// Update index
|
||||
Faction oldFaction = Faction.get(oldFactionId);
|
||||
Faction faction = this.getFaction();
|
||||
|
||||
if (oldFaction != null) oldFaction.uplayers.remove(this);
|
||||
if (faction != null) faction.uplayers.add(this);
|
||||
|
||||
String oldFactionIdDesc = "NULL";
|
||||
String oldFactionNameDesc = "NULL";
|
||||
if (oldFaction != null)
|
||||
{
|
||||
oldFactionIdDesc = oldFaction.getId();
|
||||
oldFactionNameDesc = oldFaction.getName();
|
||||
}
|
||||
String factionIdDesc = "NULL";
|
||||
String factionNameDesc = "NULL";
|
||||
if (faction != null)
|
||||
{
|
||||
factionIdDesc = faction.getId();
|
||||
factionNameDesc = faction.getName();
|
||||
}
|
||||
|
||||
Factions.get().log(Txt.parse("<i>setFactionId moved <h>%s <i>aka <h>%s <i>from <h>%s <i>aka <h>%s <i>to <h>%s <i>aka <h>%s<i>.", this.getId(), this.getDisplayName(IdUtil.getConsole()), oldFactionIdDesc, oldFactionNameDesc, factionIdDesc, factionNameDesc));
|
||||
|
||||
// Mark as changed
|
||||
this.changed();
|
||||
}
|
||||
|
||||
public void setFaction(Faction faction)
|
||||
{
|
||||
this.setFactionId(faction.getId());
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELD: role
|
||||
// -------------------------------------------- //
|
||||
|
||||
public Rel getDefaultRole()
|
||||
{
|
||||
return MConf.get().defaultPlayerRole;
|
||||
}
|
||||
|
||||
public Rel getRole()
|
||||
{
|
||||
if (this.role == null) return this.getDefaultRole();
|
||||
return this.role;
|
||||
}
|
||||
|
||||
public void setRole(Rel role)
|
||||
{
|
||||
// Clean input
|
||||
Rel target = role;
|
||||
|
||||
// Detect Nochange
|
||||
if (MUtil.equals(this.role, target)) return;
|
||||
|
||||
// Apply
|
||||
this.role = target;
|
||||
|
||||
// Mark as changed
|
||||
this.changed();
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELD: title
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean hasTitle()
|
||||
{
|
||||
return this.title != null;
|
||||
}
|
||||
|
||||
public String getTitle()
|
||||
{
|
||||
if (this.hasTitle()) return this.title;
|
||||
return Lang.PLAYER_NOTITLE;
|
||||
}
|
||||
|
||||
public void setTitle(String title)
|
||||
{
|
||||
// Clean input
|
||||
String target = title;
|
||||
if (target != null)
|
||||
{
|
||||
target = target.trim();
|
||||
if (target.length() == 0)
|
||||
{
|
||||
target = null;
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE: That we parse the title here is considered part of the 1.8 --> 2.0 migration.
|
||||
// This should be removed once the migration phase is considered to be over.
|
||||
if (target != null)
|
||||
{
|
||||
target = Txt.parse(target);
|
||||
}
|
||||
|
||||
// Detect Nochange
|
||||
if (MUtil.equals(this.title, target)) return;
|
||||
|
||||
// Apply
|
||||
this.title = target;
|
||||
|
||||
// Mark as changed
|
||||
this.changed();
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELD: powerBoost
|
||||
// -------------------------------------------- //
|
||||
|
||||
public double getPowerBoost()
|
||||
{
|
||||
Double ret = this.powerBoost;
|
||||
if (ret == null) ret = 0D;
|
||||
return ret;
|
||||
}
|
||||
|
||||
public void setPowerBoost(Double powerBoost)
|
||||
{
|
||||
// Clean input
|
||||
Double target = powerBoost;
|
||||
if (target == null || target == 0) target = null;
|
||||
|
||||
// Detect Nochange
|
||||
if (MUtil.equals(this.powerBoost, target)) return;
|
||||
|
||||
// Apply
|
||||
this.powerBoost = target;
|
||||
|
||||
// Mark as changed
|
||||
this.changed();
|
||||
}
|
||||
|
||||
public boolean hasPowerBoost()
|
||||
{
|
||||
return this.getPowerBoost() != 0D;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELD: power
|
||||
// -------------------------------------------- //
|
||||
|
||||
// MIXIN: RAW
|
||||
|
||||
public double getPowerMaxUniversal()
|
||||
{
|
||||
return Factions.get().getPowerMixin().getMaxUniversal(this);
|
||||
}
|
||||
|
||||
public double getPowerMax()
|
||||
{
|
||||
return Factions.get().getPowerMixin().getMax(this);
|
||||
}
|
||||
|
||||
public double getPowerMin()
|
||||
{
|
||||
return Factions.get().getPowerMixin().getMin(this);
|
||||
}
|
||||
|
||||
public double getPowerPerHour()
|
||||
{
|
||||
return Factions.get().getPowerMixin().getPerHour(this);
|
||||
}
|
||||
|
||||
public double getPowerPerDeath()
|
||||
{
|
||||
return Factions.get().getPowerMixin().getPerDeath(this);
|
||||
}
|
||||
|
||||
// MIXIN: FINER
|
||||
|
||||
public double getLimitedPower(double power)
|
||||
{
|
||||
power = Math.max(power, this.getPowerMin());
|
||||
power = Math.min(power, this.getPowerMax());
|
||||
|
||||
return power;
|
||||
}
|
||||
|
||||
public int getPowerMaxRounded()
|
||||
{
|
||||
return (int) Math.round(this.getPowerMax());
|
||||
}
|
||||
|
||||
public int getPowerMinRounded()
|
||||
{
|
||||
return (int) Math.round(this.getPowerMin());
|
||||
}
|
||||
|
||||
public int getPowerMaxUniversalRounded()
|
||||
{
|
||||
return (int) Math.round(this.getPowerMaxUniversal());
|
||||
}
|
||||
|
||||
// RAW
|
||||
|
||||
public double getDefaultPower()
|
||||
{
|
||||
return MConf.get().defaultPlayerPower;
|
||||
}
|
||||
|
||||
public double getPower()
|
||||
{
|
||||
Double ret = this.power;
|
||||
if (ret == null) ret = this.getDefaultPower();
|
||||
ret = this.getLimitedPower(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public void setPower(Double power)
|
||||
{
|
||||
// Clean input
|
||||
Double target = power;
|
||||
|
||||
// Detect Nochange
|
||||
if (MUtil.equals(this.power, target)) return;
|
||||
|
||||
// Apply
|
||||
this.power = target;
|
||||
|
||||
// Mark as changed
|
||||
this.changed();
|
||||
}
|
||||
|
||||
// FINER
|
||||
|
||||
public int getPowerRounded()
|
||||
{
|
||||
return (int) Math.round(this.getPower());
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELD: mapAutoUpdating
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean isMapAutoUpdating()
|
||||
{
|
||||
if (this.mapAutoUpdating == null) return false;
|
||||
if (this.mapAutoUpdating == false) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public void setMapAutoUpdating(Boolean mapAutoUpdating)
|
||||
{
|
||||
// Clean input
|
||||
Boolean target = mapAutoUpdating;
|
||||
if (target == false) target = null;
|
||||
|
||||
// Detect Nochange
|
||||
if (MUtil.equals(this.mapAutoUpdating, target)) return;
|
||||
|
||||
// Apply
|
||||
this.mapAutoUpdating = target;
|
||||
|
||||
// Mark as changed
|
||||
this.changed();
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELD: usingAdminMode
|
||||
// -------------------------------------------- //
|
||||
|
||||
private boolean usingAdminMode = false;
|
||||
public boolean isUsingAdminMode()
|
||||
{
|
||||
if (this.usingAdminMode && this.getSender() != null && !Perm.ADMIN.has(this.getSender(), false))
|
||||
if (this.usingAdminMode == null) return false;
|
||||
if (this.usingAdminMode == false) return false;
|
||||
|
||||
// Deactivate admin mode if we don't have permissions for it.
|
||||
if (this.getSender() != null && !Perm.ADMIN.has(this.getSender(), false))
|
||||
{
|
||||
// If we are using admin mode but don't have permissions for it we deactivate it.
|
||||
this.setUsingAdminMode(false);
|
||||
}
|
||||
return this.usingAdminMode;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void setUsingAdminMode(Boolean usingAdminMode)
|
||||
{
|
||||
// Clean input
|
||||
Boolean target = usingAdminMode;
|
||||
if (target == false) target = null;
|
||||
|
||||
// Detect Nochange
|
||||
if (MUtil.equals(this.usingAdminMode, target)) return;
|
||||
|
||||
// Apply
|
||||
this.usingAdminMode = target;
|
||||
|
||||
// Mark as changed
|
||||
this.changed();
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// TITLE, NAME, FACTION NAME AND CHAT
|
||||
// -------------------------------------------- //
|
||||
|
||||
public String getFactionName()
|
||||
{
|
||||
Faction faction = this.getFaction();
|
||||
if (faction.isNone()) return "";
|
||||
return faction.getName();
|
||||
}
|
||||
|
||||
// Base concatenations:
|
||||
|
||||
public String getNameAndSomething(String color, String something)
|
||||
{
|
||||
String ret = "";
|
||||
ret += color;
|
||||
ret += this.getRole().getPrefix();
|
||||
if (something != null && something.length() > 0)
|
||||
{
|
||||
ret += something;
|
||||
ret += " ";
|
||||
ret += color;
|
||||
}
|
||||
ret += this.getName();
|
||||
return ret;
|
||||
}
|
||||
|
||||
public String getNameAndFactionName()
|
||||
{
|
||||
return this.getNameAndSomething("", this.getFactionName());
|
||||
}
|
||||
|
||||
public String getNameAndTitle(String color)
|
||||
{
|
||||
if (this.hasTitle())
|
||||
{
|
||||
return this.getNameAndSomething(color, this.getTitle());
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.getNameAndSomething(color, null);
|
||||
}
|
||||
}
|
||||
|
||||
// Colored concatenations:
|
||||
// These are used in information messages
|
||||
|
||||
public String getNameAndTitle(Faction faction)
|
||||
{
|
||||
return this.getNameAndTitle(this.getColorTo(faction).toString());
|
||||
}
|
||||
public String getNameAndTitle(MPlayer uplayer)
|
||||
{
|
||||
return this.getNameAndTitle(this.getColorTo(uplayer).toString());
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// RELATION AND RELATION COLORS
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public String describeTo(RelationParticipator observer, boolean ucfirst)
|
||||
{
|
||||
return RelationUtil.describeThatToMe(this, observer, ucfirst);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String describeTo(RelationParticipator observer)
|
||||
{
|
||||
return RelationUtil.describeThatToMe(this, observer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Rel getRelationTo(RelationParticipator observer)
|
||||
{
|
||||
return RelationUtil.getRelationOfThatToMe(this, observer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Rel getRelationTo(RelationParticipator observer, boolean ignorePeaceful)
|
||||
{
|
||||
return RelationUtil.getRelationOfThatToMe(this, observer, ignorePeaceful);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChatColor getColorTo(RelationParticipator observer)
|
||||
{
|
||||
return RelationUtil.getColorOfThatToMe(this, observer);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// HEALTH
|
||||
// -------------------------------------------- //
|
||||
|
||||
public void heal(int amnt)
|
||||
{
|
||||
Player player = this.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
player.setHealth(player.getHealth() + amnt);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// TERRITORY
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean isInOwnTerritory()
|
||||
{
|
||||
PS ps = Mixin.getSenderPs(this.getId());
|
||||
if (ps == null) return false;
|
||||
return BoardColl.get().getFactionAt(ps) == this.getFaction();
|
||||
}
|
||||
|
||||
public boolean isInEnemyTerritory()
|
||||
{
|
||||
PS ps = Mixin.getSenderPs(this.getId());
|
||||
if (ps == null) return false;
|
||||
return BoardColl.get().getFactionAt(ps).getRelationTo(this) == Rel.ENEMY;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// ACTIONS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public void leave()
|
||||
{
|
||||
Faction myFaction = this.getFaction();
|
||||
|
||||
boolean permanent = myFaction.getFlag(FFlag.PERMANENT);
|
||||
|
||||
if (myFaction.getUPlayers().size() > 1)
|
||||
{
|
||||
if (!permanent && this.getRole() == Rel.LEADER)
|
||||
{
|
||||
msg("<b>You must give the leader role to someone else first.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!MConf.get().canLeaveWithNegativePower && this.getPower() < 0)
|
||||
{
|
||||
msg("<b>You cannot leave until your power is positive.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Event
|
||||
EventFactionsMembershipChange membershipChangeEvent = new EventFactionsMembershipChange(this.getSender(), this, myFaction, MembershipChangeReason.LEAVE);
|
||||
membershipChangeEvent.run();
|
||||
if (membershipChangeEvent.isCancelled()) return;
|
||||
|
||||
if (myFaction.isNormal())
|
||||
{
|
||||
for (MPlayer uplayer : myFaction.getUPlayersWhereOnline(true))
|
||||
{
|
||||
uplayer.msg("%s<i> left %s<i>.", this.describeTo(uplayer, true), myFaction.describeTo(uplayer));
|
||||
}
|
||||
|
||||
if (MConf.get().logFactionLeave)
|
||||
{
|
||||
Factions.get().log(this.getName()+" left the faction: "+myFaction.getName());
|
||||
}
|
||||
}
|
||||
|
||||
this.resetFactionData();
|
||||
|
||||
if (myFaction.isNormal() && !permanent && myFaction.getUPlayers().isEmpty())
|
||||
{
|
||||
// Remove this faction
|
||||
for (MPlayer mplayer : MPlayerColl.get().getAllOnline())
|
||||
{
|
||||
mplayer.msg("<i>%s<i> was disbanded.", myFaction.describeTo(mplayer, true));
|
||||
}
|
||||
|
||||
if (MConf.get().logFactionDisband)
|
||||
{
|
||||
Factions.get().log("The faction "+myFaction.getName()+" ("+myFaction.getId()+") was disbanded due to the last player ("+this.getName()+") leaving.");
|
||||
}
|
||||
myFaction.detach();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean tryClaim(Faction newFaction, PS ps, boolean verbooseChange, boolean verbooseSame)
|
||||
{
|
||||
PS chunk = ps.getChunk(true);
|
||||
Faction oldFaction = BoardColl.get().getFactionAt(chunk);
|
||||
|
||||
MConf mconf = MConf.get();
|
||||
|
||||
// Validate
|
||||
if (newFaction == oldFaction)
|
||||
{
|
||||
msg("%s<i> already owns this land.", newFaction.describeTo(this, true));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!this.isUsingAdminMode())
|
||||
{
|
||||
if (newFaction.isNormal())
|
||||
{
|
||||
if (mconf.getWorldsNoClaiming().contains(ps.getWorld()))
|
||||
{
|
||||
msg("<b>Sorry, this world has land claiming disabled.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!FPerm.TERRITORY.has(this, newFaction, true))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (newFaction.getUPlayers().size() < mconf.claimsRequireMinFactionMembers)
|
||||
{
|
||||
msg("Factions must have at least <h>%s<b> members to claim land.", mconf.claimsRequireMinFactionMembers);
|
||||
return false;
|
||||
}
|
||||
|
||||
int ownedLand = newFaction.getLandCount();
|
||||
|
||||
if (mconf.claimedLandsMax != 0 && ownedLand >= mconf.claimedLandsMax && ! newFaction.getFlag(FFlag.INFPOWER))
|
||||
{
|
||||
msg("<b>Limit reached. You can't claim more land.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ownedLand >= newFaction.getPowerRounded())
|
||||
{
|
||||
msg("<b>You can't claim more land. You need more power.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if
|
||||
(
|
||||
mconf.claimsMustBeConnected
|
||||
&&
|
||||
newFaction.getLandCountInWorld(ps.getWorld()) > 0
|
||||
&&
|
||||
!BoardColl.get().isConnectedPs(chunk, newFaction)
|
||||
&&
|
||||
(!mconf.claimsCanBeUnconnectedIfOwnedByOtherFaction || oldFaction.isNone())
|
||||
)
|
||||
{
|
||||
if (mconf.claimsCanBeUnconnectedIfOwnedByOtherFaction)
|
||||
{
|
||||
msg("<b>You can only claim additional land which is connected to your first claim or controlled by another faction!");
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("<b>You can only claim additional land which is connected to your first claim!");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (oldFaction.isNormal())
|
||||
{
|
||||
if (!FPerm.TERRITORY.has(this, oldFaction, false))
|
||||
{
|
||||
if (!mconf.claimingFromOthersAllowed)
|
||||
{
|
||||
msg("<b>You may not claim land from others.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (oldFaction.getRelationTo(newFaction).isAtLeast(Rel.TRUCE))
|
||||
{
|
||||
msg("<b>You can't claim this land due to your relation with the current owner.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!oldFaction.hasLandInflation())
|
||||
{
|
||||
msg("%s<i> owns this land and is strong enough to keep it.", oldFaction.getName(this));
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( ! BoardColl.get().isBorderPs(chunk))
|
||||
{
|
||||
msg("<b>You must start claiming land at the border of the territory.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Event
|
||||
EventFactionsChunkChange event = new EventFactionsChunkChange(this.getSender(), chunk, newFaction);
|
||||
event.run();
|
||||
if (event.isCancelled()) return false;
|
||||
|
||||
// Apply
|
||||
BoardColl.get().setFactionAt(chunk, newFaction);
|
||||
|
||||
// Inform
|
||||
Set<MPlayer> informees = new HashSet<MPlayer>();
|
||||
informees.add(this);
|
||||
if (newFaction.isNormal())
|
||||
{
|
||||
informees.addAll(newFaction.getUPlayers());
|
||||
}
|
||||
if (oldFaction.isNormal())
|
||||
{
|
||||
informees.addAll(oldFaction.getUPlayers());
|
||||
}
|
||||
if (MConf.get().logLandClaims)
|
||||
{
|
||||
informees.add(MPlayer.get(IdUtil.getConsole()));
|
||||
}
|
||||
|
||||
String chunkString = chunk.toString(PSFormatHumanSpace.get());
|
||||
String typeString = event.getType().toString().toLowerCase();
|
||||
for (MPlayer informee : informees)
|
||||
{
|
||||
informee.msg("<h>%s<i> did %s %s <i>for <h>%s<i> from <h>%s<i>.", this.describeTo(informee, true), typeString, chunkString, newFaction.describeTo(informee), oldFaction.describeTo(informee));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
public void setUsingAdminMode(boolean usingAdminMode) { this.usingAdminMode = usingAdminMode; this.changed(); }
|
||||
|
||||
}
|
||||
|
@ -2,8 +2,13 @@ package com.massivecraft.factions.entity;
|
||||
|
||||
import com.massivecraft.factions.Const;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.massivecore.mixin.Mixin;
|
||||
import com.massivecraft.massivecore.store.MStore;
|
||||
import com.massivecraft.massivecore.store.SenderColl;
|
||||
import com.massivecraft.massivecore.util.IdUtil;
|
||||
import com.massivecraft.massivecore.util.TimeUnit;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
|
||||
public class MPlayerColl extends SenderColl<MPlayer>
|
||||
{
|
||||
@ -18,4 +23,101 @@ public class MPlayerColl extends SenderColl<MPlayer>
|
||||
super(Const.COLLECTION_MPLAYER, MPlayer.class, MStore.getDb(), Factions.get());
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// EXTRAS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public void clean()
|
||||
{
|
||||
String universe = this.getUniverse();
|
||||
for (MPlayer uplayer : this.getAll())
|
||||
{
|
||||
String factionId = uplayer.getFactionId();
|
||||
if (FactionColl.get().containsId(factionId)) continue;
|
||||
|
||||
uplayer.resetFactionData();
|
||||
|
||||
String message = Txt.parse("<i>Reset data for <h>%s <i>in <h>%s <i>universe. Unknown factionId <h>%s", uplayer.getDisplayName(IdUtil.getConsole()), universe, factionId);
|
||||
Factions.get().log(message);
|
||||
}
|
||||
}
|
||||
|
||||
public void removePlayerDataAfterInactiveDaysRoutine()
|
||||
{
|
||||
if (MConf.get().removePlayerDataAfterInactiveDays <= 0.0) return;
|
||||
|
||||
long now = System.currentTimeMillis();
|
||||
double toleranceMillis = MConf.get().removePlayerDataAfterInactiveDays * TimeUnit.MILLIS_PER_DAY;
|
||||
|
||||
for (MPlayer uplayer : this.getAll())
|
||||
{
|
||||
Long lastPlayed = Mixin.getLastPlayed(uplayer.getId());
|
||||
if (lastPlayed == null) continue;
|
||||
|
||||
if (uplayer.isOnline()) continue;
|
||||
if (now - lastPlayed <= toleranceMillis) continue;
|
||||
|
||||
if (MConf.get().logFactionLeave || MConf.get().logFactionKick)
|
||||
{
|
||||
Factions.get().log("Player "+uplayer.getName()+" was auto-removed due to inactivity.");
|
||||
}
|
||||
|
||||
// if player is faction leader, sort out the faction since he's going away
|
||||
if (uplayer.getRole() == Rel.LEADER)
|
||||
{
|
||||
Faction faction = uplayer.getFaction();
|
||||
if (faction != null)
|
||||
{
|
||||
uplayer.getFaction().promoteNewLeader();
|
||||
}
|
||||
}
|
||||
|
||||
uplayer.leave();
|
||||
uplayer.detach();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// This method is for the 1.8.X --> 2.0.0 migration
|
||||
public void migrate()
|
||||
{
|
||||
// Create file objects
|
||||
File oldFile = new File(Factions.get().getDataFolder(), "players.json");
|
||||
File newFile = new File(Factions.get().getDataFolder(), "players.json.migrated");
|
||||
|
||||
// Already migrated?
|
||||
if ( ! oldFile.exists()) return;
|
||||
|
||||
// Read the file content through GSON.
|
||||
Type type = new TypeToken<Map<String, UPlayer>>(){}.getType();
|
||||
Map<String, UPlayer> id2uplayer = Factions.get().gson.fromJson(DiscUtil.readCatch(oldFile), type);
|
||||
|
||||
// The Coll
|
||||
UPlayerColl coll = this.getForUniverse(MassiveCore.DEFAULT);
|
||||
|
||||
// Set the data
|
||||
for (Entry<String, UPlayer> entry : id2uplayer.entrySet())
|
||||
{
|
||||
String playerId = entry.getKey();
|
||||
UPlayer uplayer = entry.getValue();
|
||||
coll.attach(uplayer, playerId);
|
||||
}
|
||||
|
||||
// Mark as migrated
|
||||
oldFile.renameTo(newFile);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// EXTRAS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public void clean()
|
||||
{
|
||||
for (UPlayerColl coll : this.getColls())
|
||||
{
|
||||
coll.clean();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
@ -1,273 +0,0 @@
|
||||
package com.massivecraft.factions.entity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.event.EventFactionsChunkChangeType;
|
||||
import com.massivecraft.massivecore.store.Entity;
|
||||
import com.massivecraft.massivecore.store.SenderEntity;
|
||||
import com.massivecraft.massivecore.util.MUtil;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
|
||||
public class UConf extends Entity<UConf>
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// META
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static UConf get(Object oid)
|
||||
{
|
||||
return UConfColls.get().get2(oid);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// UNIVERSE ENABLE SWITCH
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean enabled = true;
|
||||
|
||||
public static boolean isDisabled(Object universe)
|
||||
{
|
||||
return isDisabled(universe, null);
|
||||
}
|
||||
|
||||
public static String getDisabledMessage(Object universe)
|
||||
{
|
||||
UConf uconf = UConf.get(universe);
|
||||
return Txt.parse("<i>Factions are disabled in the <h>%s <i>universe.", uconf.getUniverse());
|
||||
}
|
||||
|
||||
public static boolean isDisabled(Object universe, Object inform)
|
||||
{
|
||||
UConf uconf = UConf.get(universe);
|
||||
if (uconf.enabled) return false;
|
||||
|
||||
if (inform instanceof CommandSender)
|
||||
{
|
||||
((CommandSender)inform).sendMessage(getDisabledMessage(universe));
|
||||
}
|
||||
else if (inform instanceof SenderEntity)
|
||||
{
|
||||
((SenderEntity<?>)inform).sendMessage(getDisabledMessage(universe));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// SPECIAL FACTION IDS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public String factionIdNone = UUID.randomUUID().toString();
|
||||
public String factionIdSafezone = UUID.randomUUID().toString();
|
||||
public String factionIdWarzone = UUID.randomUUID().toString();
|
||||
|
||||
// -------------------------------------------- //
|
||||
// DEFAULTS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public String defaultPlayerFactionId = this.factionIdNone;
|
||||
public Rel defaultPlayerRole = Rel.RECRUIT;
|
||||
public double defaultPlayerPower = 0.0;
|
||||
|
||||
public boolean defaultFactionOpen = false;
|
||||
public Map<FFlag, Boolean> defaultFactionFlags = FFlag.getDefaultDefaults();
|
||||
public Map<FPerm, Set<Rel>> defaultFactionPerms = FPerm.getDefaultDefaults();
|
||||
|
||||
// -------------------------------------------- //
|
||||
// MESSAGES
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean broadcastNameChange = false;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// POWER
|
||||
// -------------------------------------------- //
|
||||
|
||||
public double powerMax = 10.0;
|
||||
public double powerMin = 0.0;
|
||||
public double powerPerHour = 2.0;
|
||||
public double powerPerDeath = -2.0;
|
||||
|
||||
public boolean canLeaveWithNegativePower = true;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CORE
|
||||
// -------------------------------------------- //
|
||||
|
||||
public int factionMemberLimit = 0;
|
||||
public double factionPowerMax = 0.0;
|
||||
|
||||
public int factionNameLengthMin = 3;
|
||||
public int factionNameLengthMax = 16;
|
||||
public boolean factionNameForceUpperCase = false;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CLAIMS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean claimsMustBeConnected = true;
|
||||
public boolean claimingFromOthersAllowed = true;
|
||||
public boolean claimsCanBeUnconnectedIfOwnedByOtherFaction = false;
|
||||
public int claimsRequireMinFactionMembers = 1;
|
||||
public int claimedLandsMax = 0;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// HOMES
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean homesEnabled = true;
|
||||
public boolean homesMustBeInClaimedTerritory = true;
|
||||
public boolean homesTeleportCommandEnabled = true;
|
||||
public boolean homesTeleportAllowedFromEnemyTerritory = true;
|
||||
public boolean homesTeleportAllowedFromDifferentWorld = true;
|
||||
public double homesTeleportAllowedEnemyDistance = 32.0;
|
||||
public boolean homesTeleportIgnoreEnemiesIfInOwnTerritory = true;
|
||||
|
||||
public boolean homesTeleportToOnDeathActive = false;
|
||||
public EventPriority homesTeleportToOnDeathPriority = EventPriority.NORMAL;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// ASSORTED
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean permanentFactionsDisableLeaderPromotion = false;
|
||||
public double actionDeniedPainAmount = 2.0D;
|
||||
public boolean disablePVPForFactionlessPlayers = false;
|
||||
public boolean enablePVPAgainstFactionlessInAttackersLand = false;
|
||||
public double territoryShieldFactor = 0.3D;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// DENY COMMANDS
|
||||
// -------------------------------------------- //
|
||||
|
||||
// commands which will be prevented if the player is a member of a permanent faction
|
||||
public List<String> denyCommandsPermanentFactionMember = new ArrayList<String>();
|
||||
|
||||
// commands which will be prevented when in claimed territory of another faction
|
||||
public Map<Rel, List<String>> denyCommandsTerritoryRelation = MUtil.map(
|
||||
Rel.ENEMY, MUtil.list(
|
||||
// Essentials commands
|
||||
"home",
|
||||
"homes",
|
||||
"sethome",
|
||||
"createhome",
|
||||
"tpahere",
|
||||
"tpaccept",
|
||||
"tpyes",
|
||||
"tpa",
|
||||
"call",
|
||||
"tpask",
|
||||
"warp",
|
||||
"warps",
|
||||
"spawn",
|
||||
// Essentials e-alliases
|
||||
"ehome",
|
||||
"ehomes",
|
||||
"esethome",
|
||||
"ecreatehome",
|
||||
"etpahere",
|
||||
"etpaccept",
|
||||
"etpyes",
|
||||
"etpa",
|
||||
"ecall",
|
||||
"etpask",
|
||||
"ewarp",
|
||||
"ewarps",
|
||||
"espawn",
|
||||
// Essentials fallback alliases
|
||||
"essentials:home",
|
||||
"essentials:homes",
|
||||
"essentials:sethome",
|
||||
"essentials:createhome",
|
||||
"essentials:tpahere",
|
||||
"essentials:tpaccept",
|
||||
"essentials:tpyes",
|
||||
"essentials:tpa",
|
||||
"essentials:call",
|
||||
"essentials:tpask",
|
||||
"essentials:warp",
|
||||
"essentials:warps",
|
||||
"essentials:spawn",
|
||||
// Other plugins
|
||||
"wtp",
|
||||
"uspawn",
|
||||
"utp",
|
||||
"mspawn",
|
||||
"mtp",
|
||||
"fspawn",
|
||||
"ftp",
|
||||
"jspawn",
|
||||
"jtp"
|
||||
),
|
||||
Rel.NEUTRAL, new ArrayList<String>(),
|
||||
Rel.TRUCE, new ArrayList<String>(),
|
||||
Rel.ALLY, new ArrayList<String>(),
|
||||
Rel.MEMBER, new ArrayList<String>()
|
||||
);
|
||||
|
||||
// -------------------------------------------- //
|
||||
// INTEGRATION: LWC
|
||||
// -------------------------------------------- //
|
||||
|
||||
public Map<EventFactionsChunkChangeType, Boolean> lwcRemoveOnChange = MUtil.map(
|
||||
EventFactionsChunkChangeType.BUY, false,
|
||||
EventFactionsChunkChangeType.SELL, false,
|
||||
EventFactionsChunkChangeType.CONQUER, false,
|
||||
EventFactionsChunkChangeType.PILLAGE, false
|
||||
);
|
||||
|
||||
// -------------------------------------------- //
|
||||
// INTEGRATION: ECONOMY
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean econEnabled = false;
|
||||
|
||||
// TODO: Rename to include unit.
|
||||
public double econLandReward = 0.00;
|
||||
|
||||
public String econUniverseAccount = "";
|
||||
|
||||
public Map<EventFactionsChunkChangeType, Double> econChunkCost = MUtil.map(
|
||||
EventFactionsChunkChangeType.BUY, 30.0,
|
||||
EventFactionsChunkChangeType.SELL, -20.0,
|
||||
EventFactionsChunkChangeType.CONQUER, -10.0,
|
||||
EventFactionsChunkChangeType.PILLAGE, -10.0
|
||||
);
|
||||
|
||||
public double econCostCreate = 200.0;
|
||||
public double econCostSethome = 0.0;
|
||||
public double econCostJoin = 0.0;
|
||||
public double econCostLeave = 0.0;
|
||||
public double econCostKick = 0.0;
|
||||
public double econCostInvite = 0.0;
|
||||
public double econCostDeinvite = 0.0;
|
||||
public double econCostHome = 0.0;
|
||||
public double econCostName = 0.0;
|
||||
public double econCostDescription = 0.0;
|
||||
public double econCostTitle = 0.0;
|
||||
public double econCostOpen = 0.0;
|
||||
|
||||
public Map<Rel, Double> econRelCost = MUtil.map(
|
||||
Rel.ENEMY, 0.0,
|
||||
Rel.ALLY, 0.0,
|
||||
Rel.TRUCE, 0.0,
|
||||
Rel.NEUTRAL, 0.0
|
||||
);
|
||||
|
||||
//Faction banks, to pay for land claiming and other costs instead of individuals paying for them
|
||||
public boolean bankEnabled = true;
|
||||
//public static boolean bankMembersCanWithdraw = false; //Have to be at least moderator to withdraw or pay money to another faction
|
||||
public boolean bankFactionPaysCosts = true; //The faction pays for faction command costs, such as sethome
|
||||
public boolean bankFactionPaysLandCosts = true; //The faction pays for land claiming costs.
|
||||
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
package com.massivecraft.factions.entity;
|
||||
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.massivecore.MassiveCore;
|
||||
import com.massivecraft.massivecore.store.Coll;
|
||||
import com.massivecraft.massivecore.store.MStore;
|
||||
|
||||
public class UConfColl extends Coll<UConf>
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
public UConfColl(String name)
|
||||
{
|
||||
super(name, UConf.class, MStore.getDb(), Factions.get());
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
super.init();
|
||||
this.get(MassiveCore.INSTANCE, true);
|
||||
}
|
||||
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
package com.massivecraft.factions.entity;
|
||||
|
||||
import com.massivecraft.factions.Const;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.massivecore.Aspect;
|
||||
import com.massivecraft.massivecore.MassiveCore;
|
||||
|
||||
public class UConfColls extends XColls<UConfColl, UConf>
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
private static UConfColls i = new UConfColls();
|
||||
public static UConfColls get() { return i; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE: COLLS
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public UConfColl createColl(String collName)
|
||||
{
|
||||
return new UConfColl(collName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Aspect getAspect()
|
||||
{
|
||||
return Factions.get().getAspect();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBasename()
|
||||
{
|
||||
return Const.COLLECTION_UCONF;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UConf get2(Object worldNameExtractable)
|
||||
{
|
||||
UConfColl coll = this.get(worldNameExtractable);
|
||||
if (coll == null) return null;
|
||||
return coll.get(MassiveCore.INSTANCE);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,796 +0,0 @@
|
||||
package com.massivecraft.factions.entity;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.massivecraft.factions.EconomyParticipator;
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Lang;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.RelationParticipator;
|
||||
import com.massivecraft.factions.event.EventFactionsChunkChange;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange.MembershipChangeReason;
|
||||
import com.massivecraft.factions.util.RelationUtil;
|
||||
import com.massivecraft.massivecore.mixin.Mixin;
|
||||
import com.massivecraft.massivecore.ps.PS;
|
||||
import com.massivecraft.massivecore.ps.PSFormatHumanSpace;
|
||||
import com.massivecraft.massivecore.store.SenderEntity;
|
||||
import com.massivecraft.massivecore.util.IdUtil;
|
||||
import com.massivecraft.massivecore.util.MUtil;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
|
||||
|
||||
public class UPlayer extends SenderEntity<UPlayer> implements EconomyParticipator
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// META
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static UPlayer get(Object oid)
|
||||
{
|
||||
return UPlayerColls.get().get2(oid);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE: ENTITY
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public UPlayer load(UPlayer that)
|
||||
{
|
||||
this.setFactionId(that.factionId);
|
||||
this.setRole(that.role);
|
||||
this.setTitle(that.title);
|
||||
this.setPowerBoost(that.powerBoost);
|
||||
this.setPower(that.power);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDefault()
|
||||
{
|
||||
if (this.hasFaction()) return false;
|
||||
// Role means nothing without a faction.
|
||||
// Title means nothing without a faction.
|
||||
if (this.getPowerRounded() != (int) Math.round(UConf.get(this).defaultPlayerPower)) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postAttach(String id)
|
||||
{
|
||||
// If inited ...
|
||||
if (!Factions.get().isDatabaseInitialized()) return;
|
||||
|
||||
// ... update the index.
|
||||
Faction faction = this.getFaction();
|
||||
faction.uplayers.add(this);
|
||||
|
||||
//Factions.get().log(Txt.parse("<g>postAttach added <h>%s <i>aka <h>%s <i>to <h>%s <i>aka <h>%s<i>.", id, Mixin.getDisplayName(id), faction.getId(), faction.getName()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preDetach(String id)
|
||||
{
|
||||
// If inited ...
|
||||
if (!Factions.get().isDatabaseInitialized()) return;
|
||||
|
||||
// ... update the index.
|
||||
Faction faction = this.getFaction();
|
||||
faction.uplayers.remove(this);
|
||||
|
||||
//Factions.get().log(Txt.parse("<b>preDetach removed <h>%s <i>aka <h>%s <i>to <h>%s <i>aka <h>%s<i>.", id, Mixin.getDisplayName(id), faction.getId(), faction.getName()));
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// 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.
|
||||
|
||||
// This is a foreign key.
|
||||
// Each player belong to a faction.
|
||||
// Null means default for the universe.
|
||||
private String factionId = null;
|
||||
|
||||
// What role does the player have in the faction?
|
||||
// Null means default for the universe.
|
||||
private Rel role = null;
|
||||
|
||||
// What title does the player have in the faction?
|
||||
// The title is just for fun. It's not connected to any game mechanic.
|
||||
// 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 the title contains raw markup, such as "<white>" instead of "§f" it will not be parsed and "<white>" will be displayed.
|
||||
//
|
||||
// Null means the player has no title.
|
||||
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;
|
||||
|
||||
// Each player has an individual power level.
|
||||
// The power level for online players is occasionally updated by a recurring task and the power should stay the same for offline players.
|
||||
// For that reason the value is to be considered correct when you pick it. Do not call the power update method.
|
||||
// Null means default for the universe.
|
||||
private Double power = null;
|
||||
|
||||
// The id for the faction this uplayer is currently autoclaiming for.
|
||||
// NOTE: This field will not be saved to the database ever.
|
||||
// Null means the player isn't auto claiming.
|
||||
private transient Faction autoClaimFaction = null;
|
||||
public Faction getAutoClaimFaction() { return this.autoClaimFaction; }
|
||||
public void setAutoClaimFaction(Faction autoClaimFaction) { this.autoClaimFaction = autoClaimFaction; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELDS: MULTIVERSE PROXY
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean isMapAutoUpdating() { return MPlayer.get(this).isMapAutoUpdating(); }
|
||||
public void setMapAutoUpdating(boolean mapAutoUpdating) { MPlayer.get(this).setMapAutoUpdating(mapAutoUpdating); }
|
||||
|
||||
public boolean isUsingAdminMode() { return MPlayer.get(this).isUsingAdminMode(); }
|
||||
public void setUsingAdminMode(boolean usingAdminMode) { MPlayer.get(this).setUsingAdminMode(usingAdminMode); }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CORE UTILITIES
|
||||
// -------------------------------------------- //
|
||||
|
||||
public void resetFactionData()
|
||||
{
|
||||
// The default neutral faction
|
||||
this.setFactionId(null);
|
||||
this.setRole(null);
|
||||
this.setTitle(null);
|
||||
this.setAutoClaimFaction(null);
|
||||
}
|
||||
|
||||
/*
|
||||
public boolean isPresent(boolean requireFetchable)
|
||||
{
|
||||
if (!this.isOnline()) return false;
|
||||
|
||||
if (requireFetchable)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
PS ps = Mixin.getSenderPs(this.getId());
|
||||
if (ps == null) return false;
|
||||
|
||||
String psUniverse = Factions.get().getMultiverse().getUniverseForWorldName(ps.getWorld());
|
||||
if (!psUniverse.equals(this.getUniverse())) return false;
|
||||
|
||||
if (!requireFetchable) return true;
|
||||
|
||||
Player player = this.getPlayer();
|
||||
if (player == null) return false;
|
||||
|
||||
if (player.isDead()) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
*/
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELD: factionId
|
||||
// -------------------------------------------- //
|
||||
|
||||
public String getDefaultFactionId()
|
||||
{
|
||||
return UConf.get(this).defaultPlayerFactionId;
|
||||
}
|
||||
|
||||
// This method never returns null
|
||||
public String getFactionId()
|
||||
{
|
||||
if (this.factionId == null) return this.getDefaultFactionId();
|
||||
return this.factionId;
|
||||
}
|
||||
|
||||
// This method never returns null
|
||||
public Faction getFaction()
|
||||
{
|
||||
Faction ret = FactionColls.get().get(this).get(this.getFactionId());
|
||||
if (ret == null) ret = FactionColls.get().get(this).get(UConf.get(this).defaultPlayerFactionId);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public boolean hasFaction()
|
||||
{
|
||||
return !this.getFactionId().equals(UConf.get(this).factionIdNone);
|
||||
}
|
||||
|
||||
// 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)
|
||||
{
|
||||
// Clean input
|
||||
String target = factionId;
|
||||
|
||||
// Detect Nochange
|
||||
if (MUtil.equals(this.factionId, target)) return;
|
||||
|
||||
// Get the raw old value
|
||||
String oldFactionId = this.factionId;
|
||||
|
||||
// Apply
|
||||
this.factionId = target;
|
||||
|
||||
// Must be attached and initialized
|
||||
if (!this.attached()) return;
|
||||
if (!Factions.get().isDatabaseInitialized()) return;
|
||||
|
||||
if (oldFactionId == null) oldFactionId = this.getDefaultFactionId();
|
||||
|
||||
// Update index
|
||||
Faction oldFaction = FactionColls.get().get(this).get(oldFactionId);
|
||||
Faction faction = this.getFaction();
|
||||
|
||||
if (oldFaction != null) oldFaction.uplayers.remove(this);
|
||||
if (faction != null) faction.uplayers.add(this);
|
||||
|
||||
String oldFactionIdDesc = "NULL";
|
||||
String oldFactionNameDesc = "NULL";
|
||||
if (oldFaction != null)
|
||||
{
|
||||
oldFactionIdDesc = oldFaction.getId();
|
||||
oldFactionNameDesc = oldFaction.getName();
|
||||
}
|
||||
String factionIdDesc = "NULL";
|
||||
String factionNameDesc = "NULL";
|
||||
if (faction != null)
|
||||
{
|
||||
factionIdDesc = faction.getId();
|
||||
factionNameDesc = faction.getName();
|
||||
}
|
||||
|
||||
Factions.get().log(Txt.parse("<i>setFactionId moved <h>%s <i>aka <h>%s <i>from <h>%s <i>aka <h>%s <i>to <h>%s <i>aka <h>%s<i>.", this.getId(), this.getDisplayName(IdUtil.getConsole()), oldFactionIdDesc, oldFactionNameDesc, factionIdDesc, factionNameDesc));
|
||||
|
||||
// Mark as changed
|
||||
this.changed();
|
||||
}
|
||||
|
||||
public void setFaction(Faction faction)
|
||||
{
|
||||
this.setFactionId(faction.getId());
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELD: role
|
||||
// -------------------------------------------- //
|
||||
|
||||
public Rel getDefaultRole()
|
||||
{
|
||||
return UConf.get(this).defaultPlayerRole;
|
||||
}
|
||||
|
||||
public Rel getRole()
|
||||
{
|
||||
if (this.role == null) return this.getDefaultRole();
|
||||
return this.role;
|
||||
}
|
||||
|
||||
public void setRole(Rel role)
|
||||
{
|
||||
// Clean input
|
||||
Rel target = role;
|
||||
|
||||
// Detect Nochange
|
||||
if (MUtil.equals(this.role, target)) return;
|
||||
|
||||
// Apply
|
||||
this.role = target;
|
||||
|
||||
// Mark as changed
|
||||
this.changed();
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELD: title
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean hasTitle()
|
||||
{
|
||||
return this.title != null;
|
||||
}
|
||||
|
||||
public String getTitle()
|
||||
{
|
||||
if (this.hasTitle()) return this.title;
|
||||
return Lang.PLAYER_NOTITLE;
|
||||
}
|
||||
|
||||
public void setTitle(String title)
|
||||
{
|
||||
// Clean input
|
||||
String target = title;
|
||||
if (target != null)
|
||||
{
|
||||
target = target.trim();
|
||||
if (target.length() == 0)
|
||||
{
|
||||
target = null;
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE: That we parse the title here is considered part of the 1.8 --> 2.0 migration.
|
||||
// This should be removed once the migration phase is considered to be over.
|
||||
if (target != null)
|
||||
{
|
||||
target = Txt.parse(target);
|
||||
}
|
||||
|
||||
// Detect Nochange
|
||||
if (MUtil.equals(this.title, target)) return;
|
||||
|
||||
// Apply
|
||||
this.title = target;
|
||||
|
||||
// Mark as changed
|
||||
this.changed();
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELD: powerBoost
|
||||
// -------------------------------------------- //
|
||||
|
||||
public double getPowerBoost()
|
||||
{
|
||||
Double ret = this.powerBoost;
|
||||
if (ret == null) ret = 0D;
|
||||
return ret;
|
||||
}
|
||||
|
||||
public void setPowerBoost(Double powerBoost)
|
||||
{
|
||||
// Clean input
|
||||
Double target = powerBoost;
|
||||
if (target == null || target == 0) target = null;
|
||||
|
||||
// Detect Nochange
|
||||
if (MUtil.equals(this.powerBoost, target)) return;
|
||||
|
||||
// Apply
|
||||
this.powerBoost = target;
|
||||
|
||||
// Mark as changed
|
||||
this.changed();
|
||||
}
|
||||
|
||||
public boolean hasPowerBoost()
|
||||
{
|
||||
return this.getPowerBoost() != 0D;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELD: power
|
||||
// -------------------------------------------- //
|
||||
|
||||
// MIXIN: RAW
|
||||
|
||||
public double getPowerMaxUniversal()
|
||||
{
|
||||
return Factions.get().getPowerMixin().getMaxUniversal(this);
|
||||
}
|
||||
|
||||
public double getPowerMax()
|
||||
{
|
||||
return Factions.get().getPowerMixin().getMax(this);
|
||||
}
|
||||
|
||||
public double getPowerMin()
|
||||
{
|
||||
return Factions.get().getPowerMixin().getMin(this);
|
||||
}
|
||||
|
||||
public double getPowerPerHour()
|
||||
{
|
||||
return Factions.get().getPowerMixin().getPerHour(this);
|
||||
}
|
||||
|
||||
public double getPowerPerDeath()
|
||||
{
|
||||
return Factions.get().getPowerMixin().getPerDeath(this);
|
||||
}
|
||||
|
||||
// MIXIN: FINER
|
||||
|
||||
public double getLimitedPower(double power)
|
||||
{
|
||||
power = Math.max(power, this.getPowerMin());
|
||||
power = Math.min(power, this.getPowerMax());
|
||||
|
||||
return power;
|
||||
}
|
||||
|
||||
public int getPowerMaxRounded()
|
||||
{
|
||||
return (int) Math.round(this.getPowerMax());
|
||||
}
|
||||
|
||||
public int getPowerMinRounded()
|
||||
{
|
||||
return (int) Math.round(this.getPowerMin());
|
||||
}
|
||||
|
||||
public int getPowerMaxUniversalRounded()
|
||||
{
|
||||
return (int) Math.round(this.getPowerMaxUniversal());
|
||||
}
|
||||
|
||||
// RAW
|
||||
|
||||
public double getDefaultPower()
|
||||
{
|
||||
return UConf.get(this).defaultPlayerPower;
|
||||
}
|
||||
|
||||
public double getPower()
|
||||
{
|
||||
Double ret = this.power;
|
||||
if (ret == null) ret = this.getDefaultPower();
|
||||
ret = this.getLimitedPower(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public void setPower(Double power)
|
||||
{
|
||||
// Clean input
|
||||
Double target = power;
|
||||
|
||||
// Detect Nochange
|
||||
if (MUtil.equals(this.power, target)) return;
|
||||
|
||||
// Apply
|
||||
this.power = target;
|
||||
|
||||
// Mark as changed
|
||||
this.changed();
|
||||
}
|
||||
|
||||
// FINER
|
||||
|
||||
public int getPowerRounded()
|
||||
{
|
||||
return (int) Math.round(this.getPower());
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// TITLE, NAME, FACTION NAME AND CHAT
|
||||
// -------------------------------------------- //
|
||||
|
||||
public String getFactionName()
|
||||
{
|
||||
Faction faction = this.getFaction();
|
||||
if (faction.isNone()) return "";
|
||||
return faction.getName();
|
||||
}
|
||||
|
||||
// Base concatenations:
|
||||
|
||||
public String getNameAndSomething(String color, String something)
|
||||
{
|
||||
String ret = "";
|
||||
ret += color;
|
||||
ret += this.getRole().getPrefix();
|
||||
if (something != null && something.length() > 0)
|
||||
{
|
||||
ret += something;
|
||||
ret += " ";
|
||||
ret += color;
|
||||
}
|
||||
ret += this.getName();
|
||||
return ret;
|
||||
}
|
||||
|
||||
public String getNameAndFactionName()
|
||||
{
|
||||
return this.getNameAndSomething("", this.getFactionName());
|
||||
}
|
||||
|
||||
public String getNameAndTitle(String color)
|
||||
{
|
||||
if (this.hasTitle())
|
||||
{
|
||||
return this.getNameAndSomething(color, this.getTitle());
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.getNameAndSomething(color, null);
|
||||
}
|
||||
}
|
||||
|
||||
// Colored concatenations:
|
||||
// These are used in information messages
|
||||
|
||||
public String getNameAndTitle(Faction faction)
|
||||
{
|
||||
return this.getNameAndTitle(this.getColorTo(faction).toString());
|
||||
}
|
||||
public String getNameAndTitle(UPlayer uplayer)
|
||||
{
|
||||
return this.getNameAndTitle(this.getColorTo(uplayer).toString());
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// RELATION AND RELATION COLORS
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public String describeTo(RelationParticipator observer, boolean ucfirst)
|
||||
{
|
||||
return RelationUtil.describeThatToMe(this, observer, ucfirst);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String describeTo(RelationParticipator observer)
|
||||
{
|
||||
return RelationUtil.describeThatToMe(this, observer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Rel getRelationTo(RelationParticipator observer)
|
||||
{
|
||||
return RelationUtil.getRelationOfThatToMe(this, observer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Rel getRelationTo(RelationParticipator observer, boolean ignorePeaceful)
|
||||
{
|
||||
return RelationUtil.getRelationOfThatToMe(this, observer, ignorePeaceful);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChatColor getColorTo(RelationParticipator observer)
|
||||
{
|
||||
return RelationUtil.getColorOfThatToMe(this, observer);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// HEALTH
|
||||
// -------------------------------------------- //
|
||||
|
||||
public void heal(int amnt)
|
||||
{
|
||||
Player player = this.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
player.setHealth(player.getHealth() + amnt);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// TERRITORY
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean isInOwnTerritory()
|
||||
{
|
||||
PS ps = Mixin.getSenderPs(this.getId());
|
||||
if (ps == null) return false;
|
||||
return BoardColls.get().getFactionAt(ps) == this.getFaction();
|
||||
}
|
||||
|
||||
public boolean isInEnemyTerritory()
|
||||
{
|
||||
PS ps = Mixin.getSenderPs(this.getId());
|
||||
if (ps == null) return false;
|
||||
return BoardColls.get().getFactionAt(ps).getRelationTo(this) == Rel.ENEMY;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// ACTIONS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public void leave()
|
||||
{
|
||||
Faction myFaction = this.getFaction();
|
||||
|
||||
boolean permanent = myFaction.getFlag(FFlag.PERMANENT);
|
||||
|
||||
if (myFaction.getUPlayers().size() > 1)
|
||||
{
|
||||
if (!permanent && this.getRole() == Rel.LEADER)
|
||||
{
|
||||
msg("<b>You must give the leader role to someone else first.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UConf.get(myFaction).canLeaveWithNegativePower && this.getPower() < 0)
|
||||
{
|
||||
msg("<b>You cannot leave until your power is positive.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Event
|
||||
EventFactionsMembershipChange membershipChangeEvent = new EventFactionsMembershipChange(this.getSender(), this, myFaction, MembershipChangeReason.LEAVE);
|
||||
membershipChangeEvent.run();
|
||||
if (membershipChangeEvent.isCancelled()) return;
|
||||
|
||||
if (myFaction.isNormal())
|
||||
{
|
||||
for (UPlayer uplayer : myFaction.getUPlayersWhereOnline(true))
|
||||
{
|
||||
uplayer.msg("%s<i> left %s<i>.", this.describeTo(uplayer, true), myFaction.describeTo(uplayer));
|
||||
}
|
||||
|
||||
if (MConf.get().logFactionLeave)
|
||||
{
|
||||
Factions.get().log(this.getName()+" left the faction: "+myFaction.getName());
|
||||
}
|
||||
}
|
||||
|
||||
this.resetFactionData();
|
||||
|
||||
if (myFaction.isNormal() && !permanent && myFaction.getUPlayers().isEmpty())
|
||||
{
|
||||
// Remove this faction
|
||||
for (UPlayer uplayer : UPlayerColls.get().get(this).getAllOnline())
|
||||
{
|
||||
uplayer.msg("<i>%s<i> was disbanded.", myFaction.describeTo(uplayer, true));
|
||||
}
|
||||
|
||||
if (MConf.get().logFactionDisband)
|
||||
{
|
||||
Factions.get().log("The faction "+myFaction.getName()+" ("+myFaction.getId()+") was disbanded due to the last player ("+this.getName()+") leaving.");
|
||||
}
|
||||
myFaction.detach();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean tryClaim(Faction newFaction, PS ps, boolean verbooseChange, boolean verbooseSame)
|
||||
{
|
||||
PS chunk = ps.getChunk(true);
|
||||
Faction oldFaction = BoardColls.get().getFactionAt(chunk);
|
||||
|
||||
UConf uconf = UConf.get(newFaction);
|
||||
MConf mconf = MConf.get();
|
||||
|
||||
// Validate
|
||||
if (newFaction == oldFaction)
|
||||
{
|
||||
msg("%s<i> already owns this land.", newFaction.describeTo(this, true));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!this.isUsingAdminMode())
|
||||
{
|
||||
if (newFaction.isNormal())
|
||||
{
|
||||
if (mconf.getWorldsNoClaiming().contains(ps.getWorld()))
|
||||
{
|
||||
msg("<b>Sorry, this world has land claiming disabled.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!FPerm.TERRITORY.has(this, newFaction, true))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (newFaction.getUPlayers().size() < uconf.claimsRequireMinFactionMembers)
|
||||
{
|
||||
msg("Factions must have at least <h>%s<b> members to claim land.", uconf.claimsRequireMinFactionMembers);
|
||||
return false;
|
||||
}
|
||||
|
||||
int ownedLand = newFaction.getLandCount();
|
||||
|
||||
if (uconf.claimedLandsMax != 0 && ownedLand >= uconf.claimedLandsMax && ! newFaction.getFlag(FFlag.INFPOWER))
|
||||
{
|
||||
msg("<b>Limit reached. You can't claim more land.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ownedLand >= newFaction.getPowerRounded())
|
||||
{
|
||||
msg("<b>You can't claim more land. You need more power.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if
|
||||
(
|
||||
uconf.claimsMustBeConnected
|
||||
&&
|
||||
newFaction.getLandCountInWorld(ps.getWorld()) > 0
|
||||
&&
|
||||
!BoardColls.get().isConnectedPs(chunk, newFaction)
|
||||
&&
|
||||
(!uconf.claimsCanBeUnconnectedIfOwnedByOtherFaction || oldFaction.isNone())
|
||||
)
|
||||
{
|
||||
if (uconf.claimsCanBeUnconnectedIfOwnedByOtherFaction)
|
||||
{
|
||||
msg("<b>You can only claim additional land which is connected to your first claim or controlled by another faction!");
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("<b>You can only claim additional land which is connected to your first claim!");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (oldFaction.isNormal())
|
||||
{
|
||||
if (!FPerm.TERRITORY.has(this, oldFaction, false))
|
||||
{
|
||||
if (!uconf.claimingFromOthersAllowed)
|
||||
{
|
||||
msg("<b>You may not claim land from others.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (oldFaction.getRelationTo(newFaction).isAtLeast(Rel.TRUCE))
|
||||
{
|
||||
msg("<b>You can't claim this land due to your relation with the current owner.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!oldFaction.hasLandInflation())
|
||||
{
|
||||
msg("%s<i> owns this land and is strong enough to keep it.", oldFaction.getName(this));
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( ! BoardColls.get().isBorderPs(chunk))
|
||||
{
|
||||
msg("<b>You must start claiming land at the border of the territory.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Event
|
||||
EventFactionsChunkChange event = new EventFactionsChunkChange(this.getSender(), chunk, newFaction);
|
||||
event.run();
|
||||
if (event.isCancelled()) return false;
|
||||
|
||||
// Apply
|
||||
BoardColls.get().setFactionAt(chunk, newFaction);
|
||||
|
||||
// Inform
|
||||
Set<UPlayer> informees = new HashSet<UPlayer>();
|
||||
informees.add(this);
|
||||
if (newFaction.isNormal())
|
||||
{
|
||||
informees.addAll(newFaction.getUPlayers());
|
||||
}
|
||||
if (oldFaction.isNormal())
|
||||
{
|
||||
informees.addAll(oldFaction.getUPlayers());
|
||||
}
|
||||
if (MConf.get().logLandClaims)
|
||||
{
|
||||
informees.add(UPlayer.get(IdUtil.getConsole()));
|
||||
}
|
||||
|
||||
String chunkString = chunk.toString(PSFormatHumanSpace.get());
|
||||
String typeString = event.getType().toString().toLowerCase();
|
||||
for (UPlayer informee : informees)
|
||||
{
|
||||
informee.msg("<h>%s<i> did %s %s <i>for <h>%s<i> from <h>%s<i>.", this.describeTo(informee, true), typeString, chunkString, newFaction.describeTo(informee), oldFaction.describeTo(informee));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
@ -1,77 +0,0 @@
|
||||
package com.massivecraft.factions.entity;
|
||||
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.massivecore.mixin.Mixin;
|
||||
import com.massivecraft.massivecore.store.MStore;
|
||||
import com.massivecraft.massivecore.store.SenderColl;
|
||||
import com.massivecraft.massivecore.util.IdUtil;
|
||||
import com.massivecraft.massivecore.util.TimeUnit;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
|
||||
public class UPlayerColl extends SenderColl<UPlayer>
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
public UPlayerColl(String name)
|
||||
{
|
||||
super(name, UPlayer.class, MStore.getDb(), Factions.get());
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// EXTRAS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public void clean()
|
||||
{
|
||||
FactionColl factionColl = FactionColls.get().get(this);
|
||||
String universe = this.getUniverse();
|
||||
for (UPlayer uplayer : this.getAll())
|
||||
{
|
||||
String factionId = uplayer.getFactionId();
|
||||
if (factionColl.containsId(factionId)) continue;
|
||||
|
||||
uplayer.resetFactionData();
|
||||
|
||||
String message = Txt.parse("<i>Reset data for <h>%s <i>in <h>%s <i>universe. Unknown factionId <h>%s", uplayer.getDisplayName(IdUtil.getConsole()), universe, factionId);
|
||||
Factions.get().log(message);
|
||||
}
|
||||
}
|
||||
|
||||
public void removePlayerDataAfterInactiveDaysRoutine()
|
||||
{
|
||||
if (MConf.get().removePlayerDataAfterInactiveDays <= 0.0) return;
|
||||
|
||||
long now = System.currentTimeMillis();
|
||||
double toleranceMillis = MConf.get().removePlayerDataAfterInactiveDays * TimeUnit.MILLIS_PER_DAY;
|
||||
|
||||
for (UPlayer uplayer : this.getAll())
|
||||
{
|
||||
Long lastPlayed = Mixin.getLastPlayed(uplayer.getId());
|
||||
if (lastPlayed == null) continue;
|
||||
|
||||
if (uplayer.isOnline()) continue;
|
||||
if (now - lastPlayed <= toleranceMillis) continue;
|
||||
|
||||
if (MConf.get().logFactionLeave || MConf.get().logFactionKick)
|
||||
{
|
||||
Factions.get().log("Player "+uplayer.getName()+" was auto-removed due to inactivity.");
|
||||
}
|
||||
|
||||
// if player is faction leader, sort out the faction since he's going away
|
||||
if (uplayer.getRole() == Rel.LEADER)
|
||||
{
|
||||
Faction faction = uplayer.getFaction();
|
||||
if (faction != null)
|
||||
{
|
||||
uplayer.getFaction().promoteNewLeader();
|
||||
}
|
||||
}
|
||||
|
||||
uplayer.leave();
|
||||
uplayer.detach();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,95 +0,0 @@
|
||||
package com.massivecraft.factions.entity;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.massivecraft.factions.Const;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.massivecore.Aspect;
|
||||
import com.massivecraft.massivecore.MassiveCore;
|
||||
import com.massivecraft.massivecore.util.DiscUtil;
|
||||
import com.massivecraft.massivecore.xlib.gson.reflect.TypeToken;
|
||||
|
||||
public class UPlayerColls extends XColls<UPlayerColl, UPlayer>
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
private static UPlayerColls i = new UPlayerColls();
|
||||
public static UPlayerColls get() { return i; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE: COLLS
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public UPlayerColl createColl(String collName)
|
||||
{
|
||||
return new UPlayerColl(collName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Aspect getAspect()
|
||||
{
|
||||
return Factions.get().getAspect();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBasename()
|
||||
{
|
||||
return Const.COLLECTION_UPLAYER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
super.init();
|
||||
|
||||
this.migrate();
|
||||
}
|
||||
|
||||
// This method is for the 1.8.X --> 2.0.0 migration
|
||||
public void migrate()
|
||||
{
|
||||
// Create file objects
|
||||
File oldFile = new File(Factions.get().getDataFolder(), "players.json");
|
||||
File newFile = new File(Factions.get().getDataFolder(), "players.json.migrated");
|
||||
|
||||
// Already migrated?
|
||||
if ( ! oldFile.exists()) return;
|
||||
|
||||
// Read the file content through GSON.
|
||||
Type type = new TypeToken<Map<String, UPlayer>>(){}.getType();
|
||||
Map<String, UPlayer> id2uplayer = Factions.get().gson.fromJson(DiscUtil.readCatch(oldFile), type);
|
||||
|
||||
// The Coll
|
||||
UPlayerColl coll = this.getForUniverse(MassiveCore.DEFAULT);
|
||||
|
||||
// Set the data
|
||||
for (Entry<String, UPlayer> entry : id2uplayer.entrySet())
|
||||
{
|
||||
String playerId = entry.getKey();
|
||||
UPlayer uplayer = entry.getValue();
|
||||
coll.attach(uplayer, playerId);
|
||||
}
|
||||
|
||||
// Mark as migrated
|
||||
oldFile.renameTo(newFile);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// EXTRAS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public void clean()
|
||||
{
|
||||
for (UPlayerColl coll : this.getColls())
|
||||
{
|
||||
coll.clean();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,42 +0,0 @@
|
||||
package com.massivecraft.factions.entity;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.massivecraft.massivecore.store.Coll;
|
||||
import com.massivecraft.massivecore.store.Colls;
|
||||
import com.massivecraft.massivecore.store.Entity;
|
||||
import com.massivecraft.massivecore.util.MUtil;
|
||||
|
||||
public abstract class XColls<C extends Coll<E>, E> extends Colls<C, E>
|
||||
{
|
||||
@Override
|
||||
public C get(Object o)
|
||||
{
|
||||
if (o == null) return null;
|
||||
|
||||
if (o instanceof Entity)
|
||||
{
|
||||
String universe = ((Entity<?>)o).getUniverse();
|
||||
if (universe == null) return null;
|
||||
return this.getForUniverse(universe);
|
||||
}
|
||||
|
||||
if (o instanceof Coll)
|
||||
{
|
||||
String universe = ((Coll<?>)o).getUniverse();
|
||||
if (universe == null) return null;
|
||||
return this.getForUniverse(universe);
|
||||
}
|
||||
|
||||
if ((o instanceof CommandSender) && !(o instanceof Player))
|
||||
{
|
||||
return this.getForWorld(Bukkit.getWorlds().get(0).getName());
|
||||
}
|
||||
|
||||
String worldName = MUtil.extract(String.class, "worldName", o);
|
||||
if (worldName == null) return null;
|
||||
return this.getForWorld(worldName);
|
||||
}
|
||||
}
|
@ -2,7 +2,7 @@ package com.massivecraft.factions.event;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.massivecore.event.EventMassiveCore;
|
||||
|
||||
public abstract class EventFactionsAbstractSender extends EventMassiveCore
|
||||
@ -13,7 +13,7 @@ public abstract class EventFactionsAbstractSender extends EventMassiveCore
|
||||
|
||||
private final CommandSender sender;
|
||||
public CommandSender getSender() { return this.sender; }
|
||||
public UPlayer getUSender() { return this.sender == null ? null : UPlayer.get(this.sender); }
|
||||
public MPlayer getUSender() { return this.sender == null ? null : MPlayer.get(this.sender); }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CONSTRUCT
|
||||
|
@ -3,9 +3,9 @@ package com.massivecraft.factions.event;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import com.massivecraft.factions.entity.BoardColls;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.massivecore.ps.PS;
|
||||
|
||||
public class EventFactionsChunkChange extends EventFactionsAbstractSender
|
||||
@ -37,7 +37,7 @@ public class EventFactionsChunkChange extends EventFactionsAbstractSender
|
||||
{
|
||||
super(sender);
|
||||
this.chunk = chunk.getChunk(true);
|
||||
this.currentFaction = BoardColls.get().getFactionAt(chunk);
|
||||
this.currentFaction = BoardColl.get().getFactionAt(chunk);
|
||||
this.newFaction = newFaction;
|
||||
}
|
||||
|
||||
@ -50,7 +50,7 @@ public class EventFactionsChunkChange extends EventFactionsAbstractSender
|
||||
if (currentFaction.isNone()) return EventFactionsChunkChangeType.BUY;
|
||||
if (newFaction.isNormal()) return EventFactionsChunkChangeType.CONQUER;
|
||||
|
||||
UPlayer usender = this.getUSender();
|
||||
MPlayer usender = this.getUSender();
|
||||
if (usender != null && usender.getFaction() == currentFaction) return EventFactionsChunkChangeType.SELL;
|
||||
|
||||
return EventFactionsChunkChangeType.PILLAGE;
|
||||
|
@ -17,9 +17,6 @@ public class EventFactionsCreate extends EventFactionsAbstractSender
|
||||
// FIELDS
|
||||
// -------------------------------------------- //
|
||||
|
||||
private final String universe;
|
||||
public final String getUniverse() { return this.universe; }
|
||||
|
||||
private final String factionId;
|
||||
public final String getFactionId() { return this.factionId; }
|
||||
|
||||
@ -30,10 +27,9 @@ public class EventFactionsCreate extends EventFactionsAbstractSender
|
||||
// CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
public EventFactionsCreate(CommandSender sender, String universe, String factionId, String factionName)
|
||||
public EventFactionsCreate(CommandSender sender, String factionId, String factionName)
|
||||
{
|
||||
super(sender);
|
||||
this.universe = universe;
|
||||
this.factionId = factionId;
|
||||
this.factionName = factionName;
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ package com.massivecraft.factions.event;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
|
||||
public class EventFactionsInvitedChange extends EventFactionsAbstractSender
|
||||
@ -20,8 +20,8 @@ public class EventFactionsInvitedChange extends EventFactionsAbstractSender
|
||||
// FIELDS
|
||||
// -------------------------------------------- //
|
||||
|
||||
private final UPlayer uplayer;
|
||||
public UPlayer getUPlayer() { return this.uplayer; }
|
||||
private final MPlayer uplayer;
|
||||
public MPlayer getUPlayer() { return this.uplayer; }
|
||||
|
||||
private final Faction faction;
|
||||
public Faction getFaction() { return this.faction; }
|
||||
@ -34,7 +34,7 @@ public class EventFactionsInvitedChange extends EventFactionsAbstractSender
|
||||
// CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
public EventFactionsInvitedChange(CommandSender sender, UPlayer uplayer, Faction faction, boolean newInvited)
|
||||
public EventFactionsInvitedChange(CommandSender sender, MPlayer uplayer, Faction faction, boolean newInvited)
|
||||
{
|
||||
super(sender);
|
||||
this.uplayer = uplayer;
|
||||
|
@ -3,7 +3,7 @@ package com.massivecraft.factions.event;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
|
||||
public class EventFactionsMembershipChange extends EventFactionsAbstractSender
|
||||
@ -27,8 +27,8 @@ public class EventFactionsMembershipChange extends EventFactionsAbstractSender
|
||||
super.setCancelled(cancelled);
|
||||
}
|
||||
|
||||
private final UPlayer uplayer;
|
||||
public UPlayer getUPlayer() { return this.uplayer; }
|
||||
private final MPlayer uplayer;
|
||||
public MPlayer getUPlayer() { return this.uplayer; }
|
||||
|
||||
private final Faction newFaction;
|
||||
public Faction getNewFaction() { return this.newFaction; }
|
||||
@ -40,7 +40,7 @@ public class EventFactionsMembershipChange extends EventFactionsAbstractSender
|
||||
// CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
public EventFactionsMembershipChange(CommandSender sender, UPlayer uplayer, Faction newFaction, MembershipChangeReason reason)
|
||||
public EventFactionsMembershipChange(CommandSender sender, MPlayer uplayer, Faction newFaction, MembershipChangeReason reason)
|
||||
{
|
||||
super(sender);
|
||||
this.uplayer = uplayer;
|
||||
|
@ -3,7 +3,7 @@ package com.massivecraft.factions.event;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
|
||||
public class EventFactionsPowerChange extends EventFactionsAbstractSender
|
||||
{
|
||||
@ -19,8 +19,8 @@ public class EventFactionsPowerChange extends EventFactionsAbstractSender
|
||||
// FIELDS
|
||||
// -------------------------------------------- //
|
||||
|
||||
private final UPlayer uplayer;
|
||||
public UPlayer getUPlayer() { return this.uplayer; }
|
||||
private final MPlayer uplayer;
|
||||
public MPlayer getUPlayer() { return this.uplayer; }
|
||||
|
||||
private final PowerChangeReason reason;
|
||||
public PowerChangeReason getReason() { return this.reason; }
|
||||
@ -33,7 +33,7 @@ public class EventFactionsPowerChange extends EventFactionsAbstractSender
|
||||
// CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
public EventFactionsPowerChange(CommandSender sender, UPlayer uplayer, PowerChangeReason reason, double newPower)
|
||||
public EventFactionsPowerChange(CommandSender sender, MPlayer uplayer, PowerChangeReason reason, double newPower)
|
||||
{
|
||||
super(sender);
|
||||
this.uplayer = uplayer;
|
||||
|
@ -4,7 +4,7 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
|
||||
/**
|
||||
* This event is fired when PVP is disallowed between players due to any rules in Factions.
|
||||
@ -29,11 +29,11 @@ public class EventFactionsPvpDisallowed extends EventFactionsAbstract
|
||||
|
||||
private final Player attacker;
|
||||
public Player getAttacker() { return this.attacker; }
|
||||
public UPlayer getUAttacker() { return this.attacker == null ? null : UPlayer.get(this.attacker); }
|
||||
public MPlayer getUAttacker() { return this.attacker == null ? null : MPlayer.get(this.attacker); }
|
||||
|
||||
private final Player defender;
|
||||
public Player getDefender() { return this.defender; }
|
||||
public UPlayer getUDefender() { return this.defender == null ? null : UPlayer.get(this.defender); }
|
||||
public MPlayer getUDefender() { return this.defender == null ? null : MPlayer.get(this.defender); }
|
||||
|
||||
private final EntityDamageByEntityEvent event;
|
||||
public EntityDamageByEntityEvent getEvent() { return this.event; }
|
||||
|
@ -3,7 +3,7 @@ package com.massivecraft.factions.event;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
|
||||
public class EventFactionsTitleChange extends EventFactionsAbstractSender
|
||||
{
|
||||
@ -19,8 +19,8 @@ public class EventFactionsTitleChange extends EventFactionsAbstractSender
|
||||
// FIELDS
|
||||
// -------------------------------------------- //
|
||||
|
||||
private final UPlayer uplayer;
|
||||
public UPlayer getUPlayer() { return this.uplayer; }
|
||||
private final MPlayer uplayer;
|
||||
public MPlayer getUPlayer() { return this.uplayer; }
|
||||
|
||||
private String newTitle;
|
||||
public String getNewTitle() { return this.newTitle; }
|
||||
@ -30,7 +30,7 @@ public class EventFactionsTitleChange extends EventFactionsAbstractSender
|
||||
// CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
public EventFactionsTitleChange(CommandSender sender, UPlayer uplayer, String newTitle)
|
||||
public EventFactionsTitleChange(CommandSender sender, MPlayer uplayer, String newTitle)
|
||||
{
|
||||
super(sender);
|
||||
this.uplayer = uplayer;
|
||||
|
@ -5,8 +5,8 @@ import java.util.Set;
|
||||
|
||||
import com.massivecraft.factions.EconomyParticipator;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.util.RelationUtil;
|
||||
import com.massivecraft.massivecore.money.Money;
|
||||
@ -17,27 +17,25 @@ public class Econ
|
||||
// STATE
|
||||
// -------------------------------------------- //
|
||||
|
||||
// TODO: Do we really need that config option?
|
||||
// TODO: Could we not have it enabled as long as Money.enabled is true?
|
||||
public static boolean isEnabled(Object universe)
|
||||
public static boolean isEnabled()
|
||||
{
|
||||
return UConf.get(universe).econEnabled && Money.enabled();
|
||||
return MConf.get().econEnabled && Money.enabled();
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// UTIL
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static boolean payForAction(double cost, UPlayer usender, String actionDescription)
|
||||
public static boolean payForAction(double cost, MPlayer usender, String actionDescription)
|
||||
{
|
||||
if (!isEnabled(usender)) return true;
|
||||
if (!isEnabled()) return true;
|
||||
if (cost == 0D) return true;
|
||||
|
||||
if (usender.isUsingAdminMode()) return true;
|
||||
UConf uconf = UConf.get(usender);
|
||||
|
||||
Faction usenderFaction = usender.getFaction();
|
||||
|
||||
if (uconf.bankEnabled && uconf.bankFactionPaysCosts && usenderFaction.isNormal())
|
||||
if (MConf.get().bankEnabled && MConf.get().bankFactionPaysCosts && usenderFaction.isNormal())
|
||||
{
|
||||
return modifyMoney(usenderFaction, -cost, actionDescription);
|
||||
}
|
||||
@ -53,18 +51,17 @@ public class Econ
|
||||
|
||||
public static void modifyUniverseMoney(Object universe, double delta)
|
||||
{
|
||||
if (!isEnabled(universe)) return;
|
||||
UConf uconf = UConf.get(universe);
|
||||
if (!isEnabled()) return;
|
||||
|
||||
if (uconf.econUniverseAccount == null) return;
|
||||
if (uconf.econUniverseAccount.length() == 0) return;
|
||||
if (MConf.get().econUniverseAccount == null) return;
|
||||
if (MConf.get().econUniverseAccount.length() == 0) return;
|
||||
|
||||
if (!Money.exists(uconf.econUniverseAccount)) return;
|
||||
if (!Money.exists(MConf.get().econUniverseAccount)) return;
|
||||
|
||||
Money.spawn(uconf.econUniverseAccount, null, delta);
|
||||
Money.spawn(MConf.get().econUniverseAccount, null, delta);
|
||||
}
|
||||
|
||||
public static void sendBalanceInfo(UPlayer to, EconomyParticipator about)
|
||||
public static void sendBalanceInfo(MPlayer to, EconomyParticipator about)
|
||||
{
|
||||
to.msg("<a>%s's<i> balance is <h>%s<i>.", about.describeTo(to, true), Money.format(Money.get(about)));
|
||||
}
|
||||
@ -78,7 +75,7 @@ public class Econ
|
||||
if (fI == null) return true;
|
||||
|
||||
// Bypassing players can do any kind of transaction
|
||||
if (i instanceof UPlayer && ((UPlayer)i).isUsingAdminMode()) return true;
|
||||
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;
|
||||
@ -92,7 +89,7 @@ public class Econ
|
||||
if (you instanceof Faction)
|
||||
{
|
||||
if (i instanceof Faction && FPerm.WITHDRAW.has((Faction)i, fYou)) return true;
|
||||
if (i instanceof UPlayer && FPerm.WITHDRAW.has((UPlayer)i, fYou, false)) return true;
|
||||
if (i instanceof MPlayer && FPerm.WITHDRAW.has((MPlayer)i, fYou, false)) return true;
|
||||
}
|
||||
|
||||
// Otherwise you may not! ;,,;
|
||||
@ -105,7 +102,7 @@ public class Econ
|
||||
}
|
||||
public static boolean transferMoney(EconomyParticipator from, EconomyParticipator to, EconomyParticipator by, double amount, boolean notify)
|
||||
{
|
||||
if (!isEnabled(from)) return false;
|
||||
if (!isEnabled()) return false;
|
||||
|
||||
// The amount must be positive.
|
||||
// If the amount is negative we must flip and multiply amount with -1.
|
||||
@ -155,17 +152,17 @@ public class Econ
|
||||
}
|
||||
}
|
||||
|
||||
public static Set<UPlayer> getUPlayers(EconomyParticipator ep)
|
||||
public static Set<MPlayer> getUPlayers(EconomyParticipator ep)
|
||||
{
|
||||
Set<UPlayer> uplayers = new HashSet<UPlayer>();
|
||||
Set<MPlayer> uplayers = new HashSet<MPlayer>();
|
||||
|
||||
if (ep == null)
|
||||
{
|
||||
// Add nothing
|
||||
}
|
||||
else if (ep instanceof UPlayer)
|
||||
else if (ep instanceof MPlayer)
|
||||
{
|
||||
uplayers.add((UPlayer)ep);
|
||||
uplayers.add((MPlayer)ep);
|
||||
}
|
||||
else if (ep instanceof Faction)
|
||||
{
|
||||
@ -177,35 +174,35 @@ public class Econ
|
||||
|
||||
public static void sendTransferInfo(EconomyParticipator invoker, EconomyParticipator from, EconomyParticipator to, double amount)
|
||||
{
|
||||
Set<UPlayer> recipients = new HashSet<UPlayer>();
|
||||
Set<MPlayer> recipients = new HashSet<MPlayer>();
|
||||
recipients.addAll(getUPlayers(invoker));
|
||||
recipients.addAll(getUPlayers(from));
|
||||
recipients.addAll(getUPlayers(to));
|
||||
|
||||
if (invoker == null)
|
||||
{
|
||||
for (UPlayer recipient : recipients)
|
||||
for (MPlayer recipient : recipients)
|
||||
{
|
||||
recipient.msg("<h>%s<i> was transfered from <h>%s<i> to <h>%s<i>.", Money.format(amount), from.describeTo(recipient), to.describeTo(recipient));
|
||||
}
|
||||
}
|
||||
else if (invoker == from)
|
||||
{
|
||||
for (UPlayer recipient : recipients)
|
||||
for (MPlayer recipient : recipients)
|
||||
{
|
||||
recipient.msg("<h>%s<i> <h>gave %s<i> to <h>%s<i>.", from.describeTo(recipient, true), Money.format(amount), to.describeTo(recipient));
|
||||
}
|
||||
}
|
||||
else if (invoker == to)
|
||||
{
|
||||
for (UPlayer recipient : recipients)
|
||||
for (MPlayer recipient : recipients)
|
||||
{
|
||||
recipient.msg("<h>%s<i> <h>took %s<i> from <h>%s<i>.", to.describeTo(recipient, true), Money.format(amount), from.describeTo(recipient));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (UPlayer recipient : recipients)
|
||||
for (MPlayer recipient : recipients)
|
||||
{
|
||||
recipient.msg("<h>%s<i> transfered <h>%s<i> from <h>%s<i> to <h>%s<i>.", invoker.describeTo(recipient, true), Money.format(amount), from.describeTo(recipient), to.describeTo(recipient));
|
||||
}
|
||||
@ -214,7 +211,7 @@ public class Econ
|
||||
|
||||
public static boolean hasAtLeast(EconomyParticipator ep, double delta, String toDoThis)
|
||||
{
|
||||
if (!isEnabled(ep)) return true;
|
||||
if (!isEnabled()) return true;
|
||||
|
||||
if (Money.get(ep) < delta)
|
||||
{
|
||||
@ -229,7 +226,7 @@ public class Econ
|
||||
|
||||
public static boolean modifyMoney(EconomyParticipator ep, double delta, String actionDescription)
|
||||
{
|
||||
if (!isEnabled(ep)) return false;
|
||||
if (!isEnabled()) return false;
|
||||
if (delta == 0) return true;
|
||||
|
||||
String You = ep.describeTo(ep, true);
|
||||
|
@ -28,13 +28,10 @@ import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.TerritoryAccess;
|
||||
import com.massivecraft.factions.entity.Board;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.BoardColls;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.factions.entity.FactionColls;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.massivecore.EngineAbstract;
|
||||
import com.massivecraft.massivecore.money.Money;
|
||||
import com.massivecraft.massivecore.ps.PS;
|
||||
@ -241,28 +238,25 @@ public class EngineDynmap extends EngineAbstract
|
||||
Map<String, TempMarker> ret = new HashMap<String, TempMarker>();
|
||||
|
||||
// Loop current factions
|
||||
for (FactionColl coll : FactionColls.get().getColls())
|
||||
for (Faction faction : FactionColl.get().getAll())
|
||||
{
|
||||
for (Faction faction : coll.getAll())
|
||||
{
|
||||
PS ps = faction.getHome();
|
||||
if (ps == null) continue;
|
||||
PS ps = faction.getHome();
|
||||
if (ps == null) continue;
|
||||
|
||||
DynmapStyle style = getStyle(faction);
|
||||
DynmapStyle style = getStyle(faction);
|
||||
|
||||
String markerId = FACTIONS_HOME_ + faction.getId();
|
||||
String markerId = FACTIONS_HOME_ + faction.getId();
|
||||
|
||||
TempMarker temp = new TempMarker();
|
||||
temp.label = ChatColor.stripColor(faction.getName());
|
||||
temp.world = ps.getWorld();
|
||||
temp.x = ps.getLocationX();
|
||||
temp.y = ps.getLocationY();
|
||||
temp.z = ps.getLocationZ();
|
||||
temp.iconName = style.getHomeMarker();
|
||||
temp.description = getDescription(faction);
|
||||
TempMarker temp = new TempMarker();
|
||||
temp.label = ChatColor.stripColor(faction.getName());
|
||||
temp.world = ps.getWorld();
|
||||
temp.x = ps.getLocationX();
|
||||
temp.y = ps.getLocationY();
|
||||
temp.z = ps.getLocationZ();
|
||||
temp.iconName = style.getHomeMarker();
|
||||
temp.description = getDescription(faction);
|
||||
|
||||
ret.put(markerId, temp);
|
||||
}
|
||||
ret.put(markerId, temp);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@ -327,42 +321,41 @@ public class EngineDynmap extends EngineAbstract
|
||||
{
|
||||
// Create map "world name --> faction --> set of chunk coords"
|
||||
Map<String, Map<Faction, Set<PS>>> worldFactionChunks = new HashMap<String, Map<Faction, Set<PS>>>();
|
||||
for (BoardColl coll : BoardColls.get().getColls())
|
||||
|
||||
// Note: The board is the world. The board id is the world name.
|
||||
for (Board board : BoardColl.get().getAll())
|
||||
{
|
||||
// Note: The board is the world. The board id is the world name.
|
||||
for (Board board : coll.getAll())
|
||||
String world = board.getId();
|
||||
|
||||
// Get the factionChunks creatively.
|
||||
Map<Faction, Set<PS>> factionChunks = worldFactionChunks.get(world);
|
||||
if (factionChunks == null)
|
||||
{
|
||||
String world = board.getId();
|
||||
factionChunks = new HashMap<Faction, Set<PS>>();
|
||||
worldFactionChunks.put(world, factionChunks);
|
||||
}
|
||||
|
||||
// Get the factionChunks creatively.
|
||||
Map<Faction, Set<PS>> factionChunks = worldFactionChunks.get(world);
|
||||
if (factionChunks == null)
|
||||
// Populate the factionChunks
|
||||
for (Entry<PS, TerritoryAccess> entry : board.getMap().entrySet())
|
||||
{
|
||||
PS chunk = entry.getKey();
|
||||
TerritoryAccess territoryAccess = entry.getValue();
|
||||
String factionId = territoryAccess.getHostFactionId();
|
||||
Faction faction = Faction.get(factionId);
|
||||
if (faction == null) continue;
|
||||
|
||||
// Get the chunks creatively.
|
||||
Set<PS> chunks = factionChunks.get(faction);
|
||||
if (chunks == null)
|
||||
{
|
||||
factionChunks = new HashMap<Faction, Set<PS>>();
|
||||
worldFactionChunks.put(world, factionChunks);
|
||||
chunks = new HashSet<PS>();
|
||||
factionChunks.put(faction, chunks);
|
||||
}
|
||||
|
||||
// Populate the factionChunks
|
||||
for (Entry<PS, TerritoryAccess> entry : board.getMap().entrySet())
|
||||
{
|
||||
PS chunk = entry.getKey();
|
||||
TerritoryAccess territoryAccess = entry.getValue();
|
||||
String factionId = territoryAccess.getHostFactionId();
|
||||
Faction faction = FactionColls.get().getForWorld(world).get(factionId);
|
||||
if (faction == null) continue;
|
||||
|
||||
// Get the chunks creatively.
|
||||
Set<PS> chunks = factionChunks.get(faction);
|
||||
if (chunks == null)
|
||||
{
|
||||
chunks = new HashSet<PS>();
|
||||
factionChunks.put(faction, chunks);
|
||||
}
|
||||
|
||||
chunks.add(chunk);
|
||||
}
|
||||
chunks.add(chunk);
|
||||
}
|
||||
}
|
||||
|
||||
return worldFactionChunks;
|
||||
}
|
||||
|
||||
@ -659,7 +652,7 @@ public class EngineDynmap extends EngineAbstract
|
||||
|
||||
Set<String> ret = new HashSet<String>();
|
||||
|
||||
for (UPlayer uplayer : faction.getUPlayers())
|
||||
for (MPlayer uplayer : faction.getUPlayers())
|
||||
{
|
||||
// NOTE: We add both UUID and name. This might be a good idea for future proofing.
|
||||
ret.add(uplayer.getId());
|
||||
@ -676,16 +669,13 @@ public class EngineDynmap extends EngineAbstract
|
||||
|
||||
Map<String, Set<String>> ret = new HashMap<String, Set<String>>();
|
||||
|
||||
for (FactionColl coll : FactionColls.get().getColls())
|
||||
for (Faction faction : FactionColl.get().getAll())
|
||||
{
|
||||
for (Faction faction : coll.getAll())
|
||||
{
|
||||
String playersetId = createPlayersetId(faction);
|
||||
if (playersetId == null) continue;
|
||||
Set<String> playerIds = createPlayerset(faction);
|
||||
if (playerIds == null) continue;
|
||||
ret.put(playersetId, playerIds);
|
||||
}
|
||||
String playersetId = createPlayersetId(faction);
|
||||
if (playersetId == null) continue;
|
||||
Set<String> playerIds = createPlayerset(faction);
|
||||
if (playerIds == null) continue;
|
||||
ret.put(playersetId, playerIds);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@ -761,7 +751,7 @@ public class EngineDynmap extends EngineAbstract
|
||||
|
||||
// Money
|
||||
String money = "unavailable";
|
||||
if (UConf.get(faction).bankEnabled && MConf.get().dynmapDescriptionMoney)
|
||||
if (MConf.get().bankEnabled && MConf.get().dynmapDescriptionMoney)
|
||||
{
|
||||
money = Money.format(Money.get(faction));
|
||||
}
|
||||
@ -789,22 +779,22 @@ public class EngineDynmap extends EngineAbstract
|
||||
}
|
||||
|
||||
// Players
|
||||
List<UPlayer> playersList = faction.getUPlayers();
|
||||
List<MPlayer> playersList = faction.getUPlayers();
|
||||
String playersCount = String.valueOf(playersList.size());
|
||||
String players = getPlayerString(playersList);
|
||||
|
||||
UPlayer playersLeaderObject = faction.getLeader();
|
||||
MPlayer playersLeaderObject = faction.getLeader();
|
||||
String playersLeader = getPlayerName(playersLeaderObject);
|
||||
|
||||
List<UPlayer> playersOfficersList = faction.getUPlayersWhereRole(Rel.OFFICER);
|
||||
List<MPlayer> playersOfficersList = faction.getUPlayersWhereRole(Rel.OFFICER);
|
||||
String playersOfficersCount = String.valueOf(playersOfficersList.size());
|
||||
String playersOfficers = getPlayerString(playersOfficersList);
|
||||
|
||||
List<UPlayer> playersMembersList = faction.getUPlayersWhereRole(Rel.MEMBER);
|
||||
List<MPlayer> playersMembersList = faction.getUPlayersWhereRole(Rel.MEMBER);
|
||||
String playersMembersCount = String.valueOf(playersMembersList.size());
|
||||
String playersMembers = getPlayerString(playersMembersList);
|
||||
|
||||
List<UPlayer> playersRecruitsList = faction.getUPlayersWhereRole(Rel.RECRUIT);
|
||||
List<MPlayer> playersRecruitsList = faction.getUPlayersWhereRole(Rel.RECRUIT);
|
||||
String playersRecruitsCount = String.valueOf(playersRecruitsList.size());
|
||||
String playersRecruits = getPlayerString(playersRecruitsList);
|
||||
|
||||
@ -822,10 +812,10 @@ public class EngineDynmap extends EngineAbstract
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static String getPlayerString(List<UPlayer> uplayers)
|
||||
public static String getPlayerString(List<MPlayer> uplayers)
|
||||
{
|
||||
String ret = "";
|
||||
for (UPlayer uplayer : uplayers)
|
||||
for (MPlayer uplayer : uplayers)
|
||||
{
|
||||
if (ret.length() > 0) ret += ", ";
|
||||
ret += getPlayerName(uplayer);
|
||||
@ -833,7 +823,7 @@ public class EngineDynmap extends EngineAbstract
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static String getPlayerName(UPlayer uplayer)
|
||||
public static String getPlayerName(MPlayer uplayer)
|
||||
{
|
||||
if (uplayer == null) return "none";
|
||||
return escapeHtml(uplayer.getName());
|
||||
|
@ -23,7 +23,7 @@ import com.dthielke.herochat.Herochat;
|
||||
import com.dthielke.herochat.MessageFormatSupplier;
|
||||
import com.dthielke.herochat.MessageNotFoundException;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
|
||||
public abstract class ChannelFactionsAbstract implements Channel
|
||||
@ -228,13 +228,13 @@ public abstract class ChannelFactionsAbstract implements Channel
|
||||
{
|
||||
Set<Player> ret = new HashSet<Player>();
|
||||
|
||||
UPlayer fpsender = UPlayer.get(sender);
|
||||
MPlayer fpsender = MPlayer.get(sender);
|
||||
Faction faction = fpsender.getFaction();
|
||||
String universe = fpsender.getUniverse();
|
||||
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
UPlayer frecipient = UPlayer.get(player);
|
||||
MPlayer frecipient = MPlayer.get(player);
|
||||
if (!frecipient.getUniverse().equals(universe)) continue;
|
||||
if (!this.getTargetRelations().contains(faction.getRelationTo(frecipient))) continue;
|
||||
ret.add(player);
|
||||
|
@ -17,8 +17,8 @@ import com.griefcraft.lwc.LWC;
|
||||
import com.griefcraft.model.Protection;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.event.EventFactionsChunkChange;
|
||||
import com.massivecraft.factions.event.EventFactionsChunkChangeType;
|
||||
import com.massivecraft.massivecore.ps.PS;
|
||||
@ -57,9 +57,8 @@ public class EngineLwc implements Listener
|
||||
{
|
||||
// If we are supposed to clear at this chunk change type ...
|
||||
Faction newFaction = event.getNewFaction();
|
||||
UConf uconf = UConf.get(newFaction);
|
||||
EventFactionsChunkChangeType type = event.getType();
|
||||
Boolean remove = uconf.lwcRemoveOnChange.get(type);
|
||||
Boolean remove = MConf.get().lwcRemoveOnChange.get(type);
|
||||
if (remove == null) return;
|
||||
if (remove == false) return;
|
||||
|
||||
@ -73,10 +72,10 @@ public class EngineLwc implements Listener
|
||||
|
||||
public static void removeAlienProtections(PS chunkPs, Faction faction)
|
||||
{
|
||||
List<UPlayer> nonAliens = faction.getUPlayers();
|
||||
List<MPlayer> nonAliens = faction.getUPlayers();
|
||||
for (Protection protection : getProtectionsInChunk(chunkPs))
|
||||
{
|
||||
UPlayer owner = UPlayer.get(protection.getOwner());
|
||||
MPlayer owner = MPlayer.get(protection.getOwner());
|
||||
if (nonAliens.contains(owner)) continue;
|
||||
protection.remove();
|
||||
}
|
||||
|
@ -7,8 +7,8 @@ import org.bukkit.event.Listener;
|
||||
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.event.EventFactionsAbstractSender;
|
||||
import com.massivecraft.factions.event.EventFactionsChunkChange;
|
||||
import com.massivecraft.factions.event.EventFactionsChunkChangeType;
|
||||
@ -57,7 +57,7 @@ public class FactionsListenerEcon implements Listener
|
||||
if (event.getReason() != MembershipChangeReason.LEAVE) return;
|
||||
|
||||
// ... and that player was the last one in the faction ...
|
||||
UPlayer uplayer = event.getUPlayer();
|
||||
MPlayer uplayer = event.getUPlayer();
|
||||
Faction oldFaction = uplayer.getFaction();
|
||||
if (oldFaction.getUPlayers().size() > 1) return;
|
||||
|
||||
@ -73,11 +73,11 @@ public class FactionsListenerEcon implements Listener
|
||||
public void takeOnDisband(EventFactionsDisband event)
|
||||
{
|
||||
// If there is a usender ...
|
||||
UPlayer usender = event.getUSender();
|
||||
MPlayer usender = event.getUSender();
|
||||
if (usender == null) return;
|
||||
|
||||
// ... and economy is enabled ...
|
||||
if (!Econ.isEnabled(usender)) return;
|
||||
if (!Econ.isEnabled()) return;
|
||||
|
||||
// ... then transfer all the faction money to the sender.
|
||||
Faction faction = event.getFaction();
|
||||
@ -98,7 +98,7 @@ public class FactionsListenerEcon implements Listener
|
||||
public static void payForAction(EventFactionsAbstractSender event, Double cost, String desc)
|
||||
{
|
||||
// If there is a sender ...
|
||||
UPlayer usender = event.getUSender();
|
||||
MPlayer usender = event.getUSender();
|
||||
if (usender == null) return;
|
||||
|
||||
// ... and there is a cost ...
|
||||
@ -115,10 +115,8 @@ public class FactionsListenerEcon implements Listener
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void payForAction(EventFactionsChunkChange event)
|
||||
{
|
||||
Faction newFaction = event.getNewFaction();
|
||||
UConf uconf = UConf.get(newFaction);
|
||||
EventFactionsChunkChangeType type = event.getType();
|
||||
Double cost = uconf.econChunkCost.get(type);
|
||||
Double cost = MConf.get().econChunkCost.get(type);
|
||||
|
||||
String desc = type.toString().toLowerCase() + " this land";
|
||||
|
||||
@ -131,22 +129,19 @@ public class FactionsListenerEcon implements Listener
|
||||
Double cost = null;
|
||||
String desc = null;
|
||||
|
||||
UConf uconf = UConf.get(event.getSender());
|
||||
if (uconf == null) return;
|
||||
|
||||
if (event.getReason() == MembershipChangeReason.JOIN)
|
||||
{
|
||||
cost = uconf.econCostJoin;
|
||||
cost = MConf.get().econCostJoin;
|
||||
desc = "join a faction";
|
||||
}
|
||||
else if (event.getReason() == MembershipChangeReason.LEAVE)
|
||||
{
|
||||
cost = uconf.econCostLeave;
|
||||
cost = MConf.get().econCostLeave;
|
||||
desc = "leave a faction";
|
||||
}
|
||||
else if (event.getReason() == MembershipChangeReason.KICK)
|
||||
{
|
||||
cost = uconf.econCostKick;
|
||||
cost = MConf.get().econCostKick;
|
||||
desc = "kick someone from a faction";
|
||||
}
|
||||
else
|
||||
@ -160,7 +155,7 @@ public class FactionsListenerEcon implements Listener
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void payForCommand(EventFactionsRelationChange event)
|
||||
{
|
||||
Double cost = UConf.get(event.getSender()).econRelCost.get(event.getNewRelation());
|
||||
Double cost = MConf.get().econRelCost.get(event.getNewRelation());
|
||||
String desc = Factions.get().getOuterCmdFactions().cmdFactionsRelationNeutral.getDesc();
|
||||
|
||||
payForAction(event, cost, desc);
|
||||
@ -169,7 +164,7 @@ public class FactionsListenerEcon implements Listener
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void payForCommand(EventFactionsHomeChange event)
|
||||
{
|
||||
Double cost = UConf.get(event.getSender()).econCostSethome;
|
||||
Double cost = MConf.get().econCostSethome;
|
||||
String desc = Factions.get().getOuterCmdFactions().cmdFactionsSethome.getDesc();
|
||||
|
||||
payForAction(event, cost, desc);
|
||||
@ -178,7 +173,7 @@ public class FactionsListenerEcon implements Listener
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void payForCommand(EventFactionsCreate event)
|
||||
{
|
||||
Double cost = UConf.get(event.getSender()).econCostCreate;
|
||||
Double cost = MConf.get().econCostCreate;
|
||||
String desc = Factions.get().getOuterCmdFactions().cmdFactionsCreate.getDesc();
|
||||
|
||||
payForAction(event, cost, desc);
|
||||
@ -187,7 +182,7 @@ public class FactionsListenerEcon implements Listener
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void payForCommand(EventFactionsDescriptionChange event)
|
||||
{
|
||||
Double cost = UConf.get(event.getSender()).econCostDescription;
|
||||
Double cost = MConf.get().econCostDescription;
|
||||
String desc = Factions.get().getOuterCmdFactions().cmdFactionsDescription.getDesc();
|
||||
|
||||
payForAction(event, cost, desc);
|
||||
@ -196,7 +191,7 @@ public class FactionsListenerEcon implements Listener
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void payForCommand(EventFactionsNameChange event)
|
||||
{
|
||||
Double cost = UConf.get(event.getSender()).econCostName;
|
||||
Double cost = MConf.get().econCostName;
|
||||
String desc = Factions.get().getOuterCmdFactions().cmdFactionsName.getDesc();
|
||||
|
||||
payForAction(event, cost, desc);
|
||||
@ -205,7 +200,7 @@ public class FactionsListenerEcon implements Listener
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void payForCommand(EventFactionsTitleChange event)
|
||||
{
|
||||
Double cost = UConf.get(event.getSender()).econCostTitle;
|
||||
Double cost = MConf.get().econCostTitle;
|
||||
String desc = Factions.get().getOuterCmdFactions().cmdFactionsTitle.getDesc();
|
||||
|
||||
payForAction(event, cost, desc);
|
||||
@ -214,7 +209,7 @@ public class FactionsListenerEcon implements Listener
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void payForCommand(EventFactionsOpenChange event)
|
||||
{
|
||||
Double cost = UConf.get(event.getSender()).econCostOpen;
|
||||
Double cost = MConf.get().econCostOpen;
|
||||
String desc = Factions.get().getOuterCmdFactions().cmdFactionsOpen.getDesc();
|
||||
|
||||
payForAction(event, cost, desc);
|
||||
@ -223,7 +218,7 @@ public class FactionsListenerEcon implements Listener
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void payForCommand(EventFactionsInvitedChange event)
|
||||
{
|
||||
Double cost = event.isNewInvited() ? UConf.get(event.getSender()).econCostInvite : UConf.get(event.getSender()).econCostDeinvite;
|
||||
Double cost = event.isNewInvited() ? MConf.get().econCostInvite : MConf.get().econCostDeinvite;
|
||||
String desc = Factions.get().getOuterCmdFactions().cmdFactionsInvite.getDesc();
|
||||
|
||||
payForAction(event, cost, desc);
|
||||
@ -232,7 +227,7 @@ public class FactionsListenerEcon implements Listener
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void payForCommand(EventFactionsHomeTeleport event)
|
||||
{
|
||||
Double cost = UConf.get(event.getSender()).econCostHome;
|
||||
Double cost = MConf.get().econCostHome;
|
||||
String desc = Factions.get().getOuterCmdFactions().cmdFactionsHome.getDesc();
|
||||
|
||||
payForAction(event, cost, desc);
|
||||
|
@ -59,13 +59,11 @@ import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.TerritoryAccess;
|
||||
import com.massivecraft.factions.entity.BoardColls;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayerColl;
|
||||
import com.massivecraft.factions.entity.UPlayerColls;
|
||||
import com.massivecraft.factions.entity.MPlayerColl;
|
||||
import com.massivecraft.factions.event.EventFactionsPvpDisallowed;
|
||||
import com.massivecraft.factions.event.EventFactionsPowerChange;
|
||||
import com.massivecraft.factions.event.EventFactionsPowerChange.PowerChangeReason;
|
||||
@ -105,33 +103,30 @@ public class FactionsListenerMain implements Listener
|
||||
if (MUtil.isSameChunk(event)) return;
|
||||
Player player = event.getPlayer();
|
||||
|
||||
// Check Disabled
|
||||
if (UConf.isDisabled(player)) return;
|
||||
|
||||
// ... gather info on the player and the move ...
|
||||
UPlayer uplayer = UPlayerColls.get().get(event.getTo()).get(player);
|
||||
MPlayer mplayer = MPlayer.get(player);
|
||||
|
||||
PS chunkFrom = PS.valueOf(event.getFrom()).getChunk(true);
|
||||
PS chunkTo = PS.valueOf(event.getTo()).getChunk(true);
|
||||
|
||||
Faction factionFrom = BoardColls.get().getFactionAt(chunkFrom);
|
||||
Faction factionTo = BoardColls.get().getFactionAt(chunkTo);
|
||||
Faction factionFrom = BoardColl.get().getFactionAt(chunkFrom);
|
||||
Faction factionTo = BoardColl.get().getFactionAt(chunkTo);
|
||||
|
||||
// ... and send info onwards.
|
||||
this.chunkChangeTerritoryInfo(uplayer, player, chunkFrom, chunkTo, factionFrom, factionTo);
|
||||
this.chunkChangeAutoClaim(uplayer, chunkTo);
|
||||
this.chunkChangeTerritoryInfo(mplayer, player, chunkFrom, chunkTo, factionFrom, factionTo);
|
||||
this.chunkChangeAutoClaim(mplayer, chunkTo);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CHUNK CHANGE: TERRITORY INFO
|
||||
// -------------------------------------------- //
|
||||
|
||||
public void chunkChangeTerritoryInfo(UPlayer uplayer, Player player, PS chunkFrom, PS chunkTo, Faction factionFrom, Faction factionTo)
|
||||
public void chunkChangeTerritoryInfo(MPlayer uplayer, Player player, PS chunkFrom, PS chunkTo, Faction factionFrom, Faction factionTo)
|
||||
{
|
||||
// send host faction info updates
|
||||
if (uplayer.isMapAutoUpdating())
|
||||
{
|
||||
uplayer.sendMessage(BoardColls.get().getMap(uplayer, chunkTo, player.getLocation().getYaw()));
|
||||
uplayer.sendMessage(BoardColl.get().getMap(uplayer, chunkTo, player.getLocation().getYaw()));
|
||||
}
|
||||
else if (factionFrom != factionTo)
|
||||
{
|
||||
@ -144,10 +139,10 @@ public class FactionsListenerMain implements Listener
|
||||
}
|
||||
|
||||
// Show access level message if it changed.
|
||||
TerritoryAccess accessFrom = BoardColls.get().getTerritoryAccessAt(chunkFrom);
|
||||
TerritoryAccess accessFrom = BoardColl.get().getTerritoryAccessAt(chunkFrom);
|
||||
Boolean hasTerritoryAccessFrom = accessFrom.hasTerritoryAccess(uplayer);
|
||||
|
||||
TerritoryAccess accessTo = BoardColls.get().getTerritoryAccessAt(chunkTo);
|
||||
TerritoryAccess accessTo = BoardColl.get().getTerritoryAccessAt(chunkTo);
|
||||
Boolean hasTerritoryAccessTo = accessTo.hasTerritoryAccess(uplayer);
|
||||
|
||||
if (!MUtil.equals(hasTerritoryAccessFrom, hasTerritoryAccessTo))
|
||||
@ -171,7 +166,7 @@ public class FactionsListenerMain implements Listener
|
||||
// CHUNK CHANGE: AUTO CLAIM
|
||||
// -------------------------------------------- //
|
||||
|
||||
public void chunkChangeAutoClaim(UPlayer uplayer, PS chunkTo)
|
||||
public void chunkChangeAutoClaim(MPlayer uplayer, PS chunkTo)
|
||||
{
|
||||
// If the player is auto claiming ...
|
||||
Faction autoClaimFaction = uplayer.getAutoClaimFaction();
|
||||
@ -195,39 +190,36 @@ public class FactionsListenerMain implements Listener
|
||||
// (yeah other plugins can case death event to fire twice the same tick)
|
||||
if (PlayerUtil.isDuplicateDeathEvent(event)) return;
|
||||
|
||||
// Check Disabled
|
||||
if (UConf.isDisabled(player)) return;
|
||||
|
||||
UPlayer uplayer = UPlayer.get(player);
|
||||
MPlayer mplayer = MPlayer.get(player);
|
||||
|
||||
// ... and powerloss can happen here ...
|
||||
Faction faction = BoardColls.get().getFactionAt(PS.valueOf(player));
|
||||
Faction faction = BoardColl.get().getFactionAt(PS.valueOf(player));
|
||||
|
||||
if (!faction.getFlag(FFlag.POWERLOSS))
|
||||
{
|
||||
uplayer.msg("<i>You didn't lose any power since the territory you died in works that way.");
|
||||
mplayer.msg("<i>You didn't lose any power since the territory you died in works that way.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (MConf.get().getWorldsNoPowerLoss().contains(player.getWorld().getName()))
|
||||
{
|
||||
uplayer.msg("<i>You didn't lose any power due to the world you died in.");
|
||||
mplayer.msg("<i>You didn't lose any power due to the world you died in.");
|
||||
return;
|
||||
}
|
||||
|
||||
// ... alter the power ...
|
||||
double newPower = uplayer.getPower() + uplayer.getPowerPerDeath();
|
||||
double newPower = mplayer.getPower() + mplayer.getPowerPerDeath();
|
||||
|
||||
EventFactionsPowerChange powerChangeEvent = new EventFactionsPowerChange(null, uplayer, PowerChangeReason.DEATH, newPower);
|
||||
EventFactionsPowerChange powerChangeEvent = new EventFactionsPowerChange(null, mplayer, PowerChangeReason.DEATH, newPower);
|
||||
powerChangeEvent.run();
|
||||
if (powerChangeEvent.isCancelled()) return;
|
||||
newPower = powerChangeEvent.getNewPower();
|
||||
|
||||
uplayer.setPower(newPower);
|
||||
mplayer.setPower(newPower);
|
||||
|
||||
// ... and inform the player.
|
||||
// TODO: A progress bar here would be epic :)
|
||||
uplayer.msg("<i>Your power is now <h>%.2f / %.2f", newPower, uplayer.getPowerMax());
|
||||
mplayer.msg("<i>Your power is now <h>%.2f / %.2f", newPower, mplayer.getPowerMax());
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
@ -292,10 +284,7 @@ public class FactionsListenerMain implements Listener
|
||||
Entity edefender = event.getEntity();
|
||||
if (!(edefender instanceof Player)) return true;
|
||||
Player defender = (Player)edefender;
|
||||
UPlayer udefender = UPlayer.get(edefender);
|
||||
|
||||
// Check Disabled
|
||||
if (UConf.isDisabled(defender)) return true;
|
||||
MPlayer udefender = MPlayer.get(edefender);
|
||||
|
||||
// ... and the attacker is someone else ...
|
||||
Entity eattacker = MUtil.getLiableDamager(event);
|
||||
@ -306,7 +295,7 @@ public class FactionsListenerMain implements Listener
|
||||
|
||||
// ... gather defender PS and faction information ...
|
||||
PS defenderPs = PS.valueOf(defender);
|
||||
Faction defenderPsFaction = BoardColls.get().getFactionAt(defenderPs);
|
||||
Faction defenderPsFaction = BoardColl.get().getFactionAt(defenderPs);
|
||||
|
||||
// ... PVP flag may cause a damage block ...
|
||||
if (defenderPsFaction.getFlag(FFlag.PVP) == false)
|
||||
@ -322,7 +311,7 @@ public class FactionsListenerMain implements Listener
|
||||
ret = falseUnlessDisallowedPvpEventCancelled((Player)eattacker, defender, event);
|
||||
if (!ret && notify)
|
||||
{
|
||||
UPlayer attacker = UPlayer.get(eattacker);
|
||||
MPlayer attacker = MPlayer.get(eattacker);
|
||||
attacker.msg("<i>PVP is disabled in %s.", defenderPsFaction.describeTo(attacker));
|
||||
}
|
||||
return ret;
|
||||
@ -333,14 +322,14 @@ public class FactionsListenerMain implements Listener
|
||||
// ... and if the attacker is a player ...
|
||||
if (!(eattacker instanceof Player)) return true;
|
||||
Player attacker = (Player)eattacker;
|
||||
UPlayer uattacker = UPlayer.get(attacker);
|
||||
MPlayer uattacker = MPlayer.get(attacker);
|
||||
|
||||
// ... does this player bypass all protection? ...
|
||||
if (MConf.get().playersWhoBypassAllProtection.contains(attacker.getName())) return true;
|
||||
|
||||
// ... gather attacker PS and faction information ...
|
||||
PS attackerPs = PS.valueOf(attacker);
|
||||
Faction attackerPsFaction = BoardColls.get().getFactionAt(attackerPs);
|
||||
Faction attackerPsFaction = BoardColl.get().getFactionAt(attackerPs);
|
||||
|
||||
// ... 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)
|
||||
@ -357,9 +346,8 @@ public class FactionsListenerMain implements Listener
|
||||
|
||||
Faction defendFaction = udefender.getFaction();
|
||||
Faction attackFaction = uattacker.getFaction();
|
||||
UConf uconf = UConf.get(attackFaction);
|
||||
|
||||
if (attackFaction.isNone() && uconf.disablePVPForFactionlessPlayers)
|
||||
if (attackFaction.isNone() && MConf.get().disablePVPForFactionlessPlayers)
|
||||
{
|
||||
ret = falseUnlessDisallowedPvpEventCancelled(attacker, defender, event);
|
||||
if (!ret && notify) uattacker.msg("<i>You can't hurt other players until you join a faction.");
|
||||
@ -367,12 +355,12 @@ public class FactionsListenerMain implements Listener
|
||||
}
|
||||
else if (defendFaction.isNone())
|
||||
{
|
||||
if (defenderPsFaction == attackFaction && uconf.enablePVPAgainstFactionlessInAttackersLand)
|
||||
if (defenderPsFaction == attackFaction && MConf.get().enablePVPAgainstFactionlessInAttackersLand)
|
||||
{
|
||||
// Allow PVP vs. Factionless in attacker's faction territory
|
||||
return true;
|
||||
}
|
||||
else if (uconf.disablePVPForFactionlessPlayers)
|
||||
else if (MConf.get().disablePVPForFactionlessPlayers)
|
||||
{
|
||||
ret = falseUnlessDisallowedPvpEventCancelled(attacker, defender, event);
|
||||
if (!ret && notify) uattacker.msg("<i>You can't hurt players who are not currently in a faction.");
|
||||
@ -406,15 +394,15 @@ public class FactionsListenerMain implements Listener
|
||||
|
||||
// Damage will be dealt. However check if the damage should be reduced.
|
||||
double damage = event.getDamage();
|
||||
if (damage > 0.0 && udefender.hasFaction() && ownTerritory && uconf.territoryShieldFactor > 0)
|
||||
if (damage > 0.0 && udefender.hasFaction() && ownTerritory && MConf.get().territoryShieldFactor > 0)
|
||||
{
|
||||
double newDamage = damage * (1D - uconf.territoryShieldFactor);
|
||||
double newDamage = damage * (1D - MConf.get().territoryShieldFactor);
|
||||
event.setDamage(newDamage);
|
||||
|
||||
// Send message
|
||||
if (notify)
|
||||
{
|
||||
String perc = MessageFormat.format("{0,number,#%}", (uconf.territoryShieldFactor)); // TODO does this display correctly??
|
||||
String perc = MessageFormat.format("{0,number,#%}", (MConf.get().territoryShieldFactor)); // TODO does this display correctly??
|
||||
udefender.msg("<i>Enemy damage reduced by <rose>%s<i>.", perc);
|
||||
}
|
||||
}
|
||||
@ -440,18 +428,16 @@ public class FactionsListenerMain implements Listener
|
||||
if (!MConf.get().removePlayerDataWhenBanned) return;
|
||||
|
||||
// ... get rid of their stored info.
|
||||
for (UPlayerColl coll : UPlayerColls.get().getColls())
|
||||
{
|
||||
UPlayer uplayer = coll.get(player, false);
|
||||
if (uplayer == null) continue;
|
||||
MPlayer mplayer = MPlayerColl.get().get(player, false);
|
||||
if (mplayer == null) return;
|
||||
|
||||
if (uplayer.getRole() == Rel.LEADER)
|
||||
{
|
||||
uplayer.getFaction().promoteNewLeader();
|
||||
}
|
||||
uplayer.leave();
|
||||
uplayer.detach();
|
||||
if (mplayer.getRole() == Rel.LEADER)
|
||||
{
|
||||
mplayer.getFaction().promoteNewLeader();
|
||||
}
|
||||
|
||||
mplayer.leave();
|
||||
mplayer.detach();
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
@ -476,10 +462,7 @@ public class FactionsListenerMain implements Listener
|
||||
// If a player is trying to run a command ...
|
||||
Player player = event.getPlayer();
|
||||
|
||||
// Check Disabled
|
||||
if (UConf.isDisabled(player)) return;
|
||||
|
||||
UPlayer uplayer = UPlayer.get(player);
|
||||
MPlayer uplayer = MPlayer.get(player);
|
||||
|
||||
// ... and the player does not have adminmode ...
|
||||
if (uplayer.isUsingAdminMode()) return;
|
||||
@ -491,7 +474,7 @@ public class FactionsListenerMain implements Listener
|
||||
command = command.trim();
|
||||
|
||||
// ... the command may be denied for members of permanent factions ...
|
||||
if (uplayer.hasFaction() && uplayer.getFaction().getFlag(FFlag.PERMANENT) && containsCommand(command, UConf.get(player).denyCommandsPermanentFactionMember))
|
||||
if (uplayer.hasFaction() && uplayer.getFaction().getFlag(FFlag.PERMANENT) && containsCommand(command, MConf.get().denyCommandsPermanentFactionMember))
|
||||
{
|
||||
uplayer.msg("<b>You can't use \"<h>/%s<b>\" as member of a permanent faction.", command);
|
||||
event.setCancelled(true);
|
||||
@ -500,13 +483,13 @@ public class FactionsListenerMain implements Listener
|
||||
|
||||
// ... if there is a faction at the players location ...
|
||||
PS ps = PS.valueOf(player).getChunk(true);
|
||||
Faction factionAtPs = BoardColls.get().getFactionAt(ps);
|
||||
Faction factionAtPs = BoardColl.get().getFactionAt(ps);
|
||||
if (factionAtPs.isNone()) return; // TODO: An NPE can arise here? Why?
|
||||
|
||||
// ... the command may be denied in the territory of this relation type ...
|
||||
Rel rel = factionAtPs.getRelationTo(uplayer);
|
||||
|
||||
List<String> deniedCommands = UConf.get(player).denyCommandsTerritoryRelation.get(rel);
|
||||
List<String> deniedCommands = MConf.get().denyCommandsTerritoryRelation.get(rel);
|
||||
if (deniedCommands == null) return;
|
||||
if (!containsCommand(command, deniedCommands)) return;
|
||||
|
||||
@ -542,12 +525,9 @@ public class FactionsListenerMain implements Listener
|
||||
// If a monster is spawning ...
|
||||
if ( ! MConf.get().entityTypesMonsters.contains(event.getEntityType())) return;
|
||||
|
||||
// Check Disabled
|
||||
if (UConf.isDisabled(event.getLocation())) return;
|
||||
|
||||
// ... at a place where monsters are forbidden ...
|
||||
PS ps = PS.valueOf(event.getLocation());
|
||||
Faction faction = BoardColls.get().getFactionAt(ps);
|
||||
Faction faction = BoardColl.get().getFactionAt(ps);
|
||||
if (faction.getFlag(FFlag.MONSTERS)) return;
|
||||
|
||||
// ... block the spawn.
|
||||
@ -564,12 +544,9 @@ public class FactionsListenerMain implements Listener
|
||||
Entity target = event.getTarget();
|
||||
if (target == null) return;
|
||||
|
||||
// Check Disabled
|
||||
if (UConf.isDisabled(target)) return;
|
||||
|
||||
// ... at a place where monsters are forbidden ...
|
||||
PS ps = PS.valueOf(target);
|
||||
Faction faction = BoardColls.get().getFactionAt(ps);
|
||||
Faction faction = BoardColl.get().getFactionAt(ps);
|
||||
if (faction.getFlag(FFlag.MONSTERS)) return;
|
||||
|
||||
// ... then if ghast target nothing ...
|
||||
@ -594,11 +571,8 @@ public class FactionsListenerMain implements Listener
|
||||
if (event.getCause() != RemoveCause.EXPLOSION) return;
|
||||
Entity entity = event.getEntity();
|
||||
|
||||
// Check Disabled
|
||||
if (UConf.isDisabled(entity)) return;
|
||||
|
||||
// ... and the faction there has explosions disabled ...
|
||||
Faction faction = BoardColls.get().getFactionAt(PS.valueOf(entity));
|
||||
Faction faction = BoardColl.get().getFactionAt(PS.valueOf(entity));
|
||||
if (faction.isExplosionsAllowed()) return;
|
||||
|
||||
// ... then cancel.
|
||||
@ -619,11 +593,8 @@ public class FactionsListenerMain implements Listener
|
||||
// If an explosion occurs at a location ...
|
||||
Location location = event.getLocation();
|
||||
|
||||
// Check Disabled
|
||||
if (UConf.isDisabled(location)) return;
|
||||
|
||||
// Check the entity. Are explosions disabled there?
|
||||
faction = BoardColls.get().getFactionAt(PS.valueOf(location));
|
||||
faction = BoardColl.get().getFactionAt(PS.valueOf(location));
|
||||
allowed = faction.isExplosionsAllowed();
|
||||
if (allowed == false)
|
||||
{
|
||||
@ -637,7 +608,7 @@ public class FactionsListenerMain implements Listener
|
||||
while (iter.hasNext())
|
||||
{
|
||||
Block block = iter.next();
|
||||
faction = BoardColls.get().getFactionAt(PS.valueOf(block));
|
||||
faction = BoardColl.get().getFactionAt(PS.valueOf(block));
|
||||
allowed = faction2allowed.get(faction);
|
||||
if (allowed == null)
|
||||
{
|
||||
@ -656,12 +627,9 @@ public class FactionsListenerMain implements Listener
|
||||
Entity entity = event.getEntity();
|
||||
if (!(entity instanceof Wither)) return;
|
||||
|
||||
// Check Disabled
|
||||
if (UConf.isDisabled(entity)) return;
|
||||
|
||||
// ... and the faction there has explosions disabled ...
|
||||
PS ps = PS.valueOf(event.getBlock());
|
||||
Faction faction = BoardColls.get().getFactionAt(ps);
|
||||
Faction faction = BoardColl.get().getFactionAt(ps);
|
||||
|
||||
if (faction.isExplosionsAllowed()) return;
|
||||
|
||||
@ -680,12 +648,9 @@ public class FactionsListenerMain implements Listener
|
||||
Entity entity = event.getEntity();
|
||||
if (!(entity instanceof Enderman)) return;
|
||||
|
||||
// Check Disabled
|
||||
if (UConf.isDisabled(entity)) return;
|
||||
|
||||
// ... and the faction there has endergrief disabled ...
|
||||
PS ps = PS.valueOf(event.getBlock());
|
||||
Faction faction = BoardColls.get().getFactionAt(ps);
|
||||
Faction faction = BoardColl.get().getFactionAt(ps);
|
||||
if (faction.getFlag(FFlag.ENDERGRIEF)) return;
|
||||
|
||||
// ... stop the block alteration.
|
||||
@ -698,12 +663,9 @@ public class FactionsListenerMain implements Listener
|
||||
|
||||
public void blockFireSpread(Block block, Cancellable cancellable)
|
||||
{
|
||||
// Check Disabled
|
||||
if (UConf.isDisabled(block)) return;
|
||||
|
||||
// If the faction at the block has firespread disabled ...
|
||||
PS ps = PS.valueOf(block);
|
||||
Faction faction = BoardColls.get().getFactionAt(ps);
|
||||
Faction faction = BoardColl.get().getFactionAt(ps);
|
||||
|
||||
if (faction.getFlag(FFlag.FIRESPREAD)) return;
|
||||
|
||||
@ -750,16 +712,16 @@ public class FactionsListenerMain implements Listener
|
||||
String name = player.getName();
|
||||
if (MConf.get().playersWhoBypassAllProtection.contains(name)) return true;
|
||||
|
||||
UPlayer uplayer = UPlayer.get(player);
|
||||
MPlayer uplayer = MPlayer.get(player);
|
||||
if (uplayer.isUsingAdminMode()) return true;
|
||||
|
||||
if (!FPerm.BUILD.has(uplayer, ps, false) && FPerm.PAINBUILD.has(uplayer, ps, false))
|
||||
{
|
||||
if (verboose)
|
||||
{
|
||||
Faction hostFaction = BoardColls.get().getFactionAt(ps);
|
||||
Faction hostFaction = BoardColl.get().getFactionAt(ps);
|
||||
uplayer.msg("<b>It is painful to build in the territory of %s<b>.", hostFaction.describeTo(uplayer));
|
||||
player.damage(UConf.get(player).actionDeniedPainAmount);
|
||||
player.damage(MConf.get().actionDeniedPainAmount);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -844,13 +806,13 @@ public class FactionsListenerMain implements Listener
|
||||
{
|
||||
Block block = event.getBlock();
|
||||
|
||||
Faction pistonFaction = BoardColls.get().getFactionAt(PS.valueOf(block));
|
||||
Faction pistonFaction = BoardColl.get().getFactionAt(PS.valueOf(block));
|
||||
|
||||
// target end-of-the-line empty (air) block which is being pushed into, including if piston itself would extend into air
|
||||
Block targetBlock = block.getRelative(event.getDirection(), event.getLength() + 1);
|
||||
|
||||
// members of faction might not have build rights in their own territory, but pistons should still work regardless; so, address that corner case
|
||||
Faction targetFaction = BoardColls.get().getFactionAt(PS.valueOf(targetBlock));
|
||||
Faction targetFaction = BoardColl.get().getFactionAt(PS.valueOf(targetBlock));
|
||||
if (targetFaction == pistonFaction) return;
|
||||
|
||||
// if potentially pushing into air/water/lava in another territory, we need to check it out
|
||||
@ -878,10 +840,10 @@ public class FactionsListenerMain implements Listener
|
||||
// if potentially retracted block is just air/water/lava, no worries
|
||||
if (retractBlock.isEmpty() || retractBlock.isLiquid()) return;
|
||||
|
||||
Faction pistonFaction = BoardColls.get().getFactionAt(PS.valueOf(event.getBlock()));
|
||||
Faction pistonFaction = BoardColl.get().getFactionAt(PS.valueOf(event.getBlock()));
|
||||
|
||||
// members of faction might not have build rights in their own territory, but pistons should still work regardless; so, address that corner case
|
||||
Faction targetFaction = BoardColls.get().getFactionAt(retractPs);
|
||||
Faction targetFaction = BoardColl.get().getFactionAt(retractPs);
|
||||
if (targetFaction == pistonFaction) return;
|
||||
|
||||
if (!FPerm.BUILD.has(pistonFaction, targetFaction))
|
||||
@ -929,7 +891,7 @@ public class FactionsListenerMain implements Listener
|
||||
String name = player.getName();
|
||||
if (MConf.get().playersWhoBypassAllProtection.contains(name)) return true;
|
||||
|
||||
UPlayer uplayer = UPlayer.get(player);
|
||||
MPlayer uplayer = MPlayer.get(player);
|
||||
if (uplayer.isUsingAdminMode()) return true;
|
||||
|
||||
return FPerm.BUILD.has(uplayer, ps, !justCheck);
|
||||
@ -940,7 +902,7 @@ public class FactionsListenerMain implements Listener
|
||||
String name = player.getName();
|
||||
if (MConf.get().playersWhoBypassAllProtection.contains(name)) return true;
|
||||
|
||||
UPlayer me = UPlayer.get(player);
|
||||
MPlayer me = MPlayer.get(player);
|
||||
if (me.isUsingAdminMode()) return true;
|
||||
|
||||
PS ps = PS.valueOf(block);
|
||||
@ -986,13 +948,12 @@ public class FactionsListenerMain implements Listener
|
||||
{
|
||||
// If a player is respawning ...
|
||||
final Player player = event.getPlayer();
|
||||
final UPlayer uplayer = UPlayer.get(player);
|
||||
final UConf uconf = UConf.get(player);
|
||||
final MPlayer uplayer = MPlayer.get(player);
|
||||
|
||||
// ... homes are enabled, active and at this priority ...
|
||||
if (!uconf.homesEnabled) return;
|
||||
if (!uconf.homesTeleportToOnDeathActive) return;
|
||||
if (uconf.homesTeleportToOnDeathPriority != priority) return;
|
||||
if (!MConf.get().homesEnabled) return;
|
||||
if (!MConf.get().homesTeleportToOnDeathActive) return;
|
||||
if (MConf.get().homesTeleportToOnDeathPriority != priority) return;
|
||||
|
||||
// ... and the player has a faction ...
|
||||
final Faction faction = uplayer.getFaction();
|
||||
|
@ -1,12 +1,12 @@
|
||||
package com.massivecraft.factions.mixin;
|
||||
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
|
||||
public interface PowerMixin
|
||||
{
|
||||
public double getMaxUniversal(UPlayer uplayer);
|
||||
public double getMax(UPlayer uplayer);
|
||||
public double getMin(UPlayer uplayer);
|
||||
public double getPerHour(UPlayer uplayer);
|
||||
public double getPerDeath(UPlayer uplayer);
|
||||
public double getMaxUniversal(MPlayer uplayer);
|
||||
public double getMax(MPlayer uplayer);
|
||||
public double getMin(MPlayer uplayer);
|
||||
public double getPerHour(MPlayer uplayer);
|
||||
public double getPerDeath(MPlayer uplayer);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.massivecraft.factions.mixin;
|
||||
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
|
||||
public class PowerMixinDefault implements PowerMixin
|
||||
{
|
||||
@ -17,33 +17,33 @@ public class PowerMixinDefault implements PowerMixin
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public double getMaxUniversal(UPlayer uplayer)
|
||||
public double getMaxUniversal(MPlayer mplayer)
|
||||
{
|
||||
return this.getMax(uplayer);
|
||||
return this.getMax(mplayer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getMax(UPlayer uplayer)
|
||||
public double getMax(MPlayer mplayer)
|
||||
{
|
||||
return UConf.get(uplayer).powerMax + uplayer.getPowerBoost();
|
||||
return MConf.get().powerMax + mplayer.getPowerBoost();
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getMin(UPlayer uplayer)
|
||||
public double getMin(MPlayer mplayer)
|
||||
{
|
||||
return UConf.get(uplayer).powerMin;
|
||||
return MConf.get().powerMin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getPerHour(UPlayer uplayer)
|
||||
public double getPerHour(MPlayer mplayer)
|
||||
{
|
||||
return UConf.get(uplayer).powerPerHour;
|
||||
return MConf.get().powerPerHour;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getPerDeath(UPlayer uplayer)
|
||||
public double getPerDeath(MPlayer mplayer)
|
||||
{
|
||||
return UConf.get(uplayer).powerPerDeath;
|
||||
return MConf.get().powerPerDeath;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,9 +1,7 @@
|
||||
package com.massivecraft.factions.task;
|
||||
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.factions.entity.FactionColls;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.massivecore.ModuloRepeatTask;
|
||||
import com.massivecraft.massivecore.util.TimeUnit;
|
||||
|
||||
@ -35,13 +33,7 @@ public class TaskEconLandReward extends ModuloRepeatTask
|
||||
@Override
|
||||
public void invoke(long now)
|
||||
{
|
||||
for (FactionColl coll : FactionColls.get().getColls())
|
||||
{
|
||||
// Check disabled
|
||||
if (UConf.isDisabled(coll)) continue;
|
||||
|
||||
coll.econLandRewardRoutine();
|
||||
}
|
||||
FactionColl.get().econLandRewardRoutine();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,9 +1,7 @@
|
||||
package com.massivecraft.factions.task;
|
||||
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayerColl;
|
||||
import com.massivecraft.factions.entity.UPlayerColls;
|
||||
import com.massivecraft.factions.entity.MPlayerColl;
|
||||
import com.massivecraft.massivecore.ModuloRepeatTask;
|
||||
import com.massivecraft.massivecore.util.TimeUnit;
|
||||
|
||||
@ -35,13 +33,7 @@ public class TaskPlayerDataRemove extends ModuloRepeatTask
|
||||
@Override
|
||||
public void invoke(long now)
|
||||
{
|
||||
for (UPlayerColl coll : UPlayerColls.get().getColls())
|
||||
{
|
||||
// Check disabled
|
||||
if (UConf.isDisabled(coll)) continue;
|
||||
|
||||
coll.removePlayerDataAfterInactiveDaysRoutine();
|
||||
}
|
||||
MPlayerColl.get().removePlayerDataAfterInactiveDaysRoutine();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,8 +4,7 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.UConf;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.event.EventFactionsPowerChange;
|
||||
import com.massivecraft.factions.event.EventFactionsPowerChange.PowerChangeReason;
|
||||
import com.massivecraft.massivecore.ModuloRepeatTask;
|
||||
@ -43,20 +42,17 @@ public class TaskPlayerPowerUpdate extends ModuloRepeatTask
|
||||
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
// Check disabled
|
||||
if (UConf.isDisabled(player)) continue;
|
||||
|
||||
if (player.isDead()) continue;
|
||||
|
||||
UPlayer uplayer = UPlayer.get(player);
|
||||
double newPower = uplayer.getPower() + uplayer.getPowerPerHour() * millis / TimeUnit.MILLIS_PER_HOUR;
|
||||
MPlayer mplayer = MPlayer.get(player);
|
||||
double newPower = mplayer.getPower() + mplayer.getPowerPerHour() * millis / TimeUnit.MILLIS_PER_HOUR;
|
||||
|
||||
EventFactionsPowerChange event = new EventFactionsPowerChange(null, uplayer, PowerChangeReason.TIME, newPower);
|
||||
EventFactionsPowerChange event = new EventFactionsPowerChange(null, mplayer, PowerChangeReason.TIME, newPower);
|
||||
event.run();
|
||||
if (event.isCancelled()) continue;
|
||||
newPower = event.getNewPower();
|
||||
|
||||
uplayer.setPower(newPower);
|
||||
mplayer.setPower(newPower);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@ import org.bukkit.ChatColor;
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.RelationParticipator;
|
||||
import com.massivecraft.factions.entity.UPlayer;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
@ -29,7 +29,7 @@ public class RelationUtil
|
||||
|
||||
if (that instanceof Faction)
|
||||
{
|
||||
if (me instanceof UPlayer && myFaction == thatFaction)
|
||||
if (me instanceof MPlayer && myFaction == thatFaction)
|
||||
{
|
||||
ret = "your faction";
|
||||
}
|
||||
@ -38,9 +38,9 @@ public class RelationUtil
|
||||
ret = thatFaction.getName();
|
||||
}
|
||||
}
|
||||
else if (that instanceof UPlayer)
|
||||
else if (that instanceof MPlayer)
|
||||
{
|
||||
UPlayer uplayerthat = (UPlayer) that;
|
||||
MPlayer uplayerthat = (MPlayer) that;
|
||||
if (that == me)
|
||||
{
|
||||
ret = "you";
|
||||
@ -98,9 +98,9 @@ public class RelationUtil
|
||||
ret = Rel.MEMBER;
|
||||
// Do officer and leader check
|
||||
//P.p.log("getRelationOfThatToMe the factions are the same for "+that.getClass().getSimpleName()+" and observer "+me.getClass().getSimpleName());
|
||||
if (that instanceof UPlayer)
|
||||
if (that instanceof MPlayer)
|
||||
{
|
||||
ret = ((UPlayer)that).getRole();
|
||||
ret = ((MPlayer)that).getRole();
|
||||
//P.p.log("getRelationOfThatToMe it was a player and role is "+ret);
|
||||
}
|
||||
}
|
||||
@ -119,9 +119,9 @@ public class RelationUtil
|
||||
return (Faction) rp;
|
||||
}
|
||||
|
||||
if (rp instanceof UPlayer)
|
||||
if (rp instanceof MPlayer)
|
||||
{
|
||||
return ((UPlayer) rp).getFaction();
|
||||
return ((MPlayer) rp).getFaction();
|
||||
}
|
||||
|
||||
// ERROR
|
||||
|
Loading…
Reference in New Issue
Block a user