Add f fly
This commit is contained in:
		@@ -38,6 +38,8 @@ permissions:
 | 
				
			|||||||
  factions.flag.list: {description: list flags, default: false}
 | 
					  factions.flag.list: {description: list flags, default: false}
 | 
				
			||||||
  factions.flag.set: {description: set flags, default: false}
 | 
					  factions.flag.set: {description: set flags, default: false}
 | 
				
			||||||
  factions.flag.show: {description: show flags, default: false}
 | 
					  factions.flag.show: {description: show flags, default: false}
 | 
				
			||||||
 | 
					  factions.fly: {description: faction fly, default: false}
 | 
				
			||||||
 | 
					  factions.fly.other: {description: set faction fly for others, default: false}
 | 
				
			||||||
  factions.invite: {description: manage invites, default: false}
 | 
					  factions.invite: {description: manage invites, default: false}
 | 
				
			||||||
  factions.invite.list: {description: list invited players, default: false}
 | 
					  factions.invite.list: {description: list invited players, default: false}
 | 
				
			||||||
  factions.invite.list.other: {description: list invited players of another factions, default: false}
 | 
					  factions.invite.list.other: {description: list invited players of another factions, default: false}
 | 
				
			||||||
@@ -142,6 +144,8 @@ permissions:
 | 
				
			|||||||
      factions.flag.list: true
 | 
					      factions.flag.list: true
 | 
				
			||||||
      factions.flag.set: true
 | 
					      factions.flag.set: true
 | 
				
			||||||
      factions.flag.show: true
 | 
					      factions.flag.show: true
 | 
				
			||||||
 | 
					      factions.fly: true
 | 
				
			||||||
 | 
					      factions.fly.other: true
 | 
				
			||||||
      factions.home: true
 | 
					      factions.home: true
 | 
				
			||||||
      factions.invite: true
 | 
					      factions.invite: true
 | 
				
			||||||
      factions.invite.list: true
 | 
					      factions.invite.list: true
 | 
				
			||||||
@@ -243,6 +247,7 @@ permissions:
 | 
				
			|||||||
      factions.leader.any: true
 | 
					      factions.leader.any: true
 | 
				
			||||||
      factions.officer.any: true
 | 
					      factions.officer.any: true
 | 
				
			||||||
      factions.access.any: true
 | 
					      factions.access.any: true
 | 
				
			||||||
 | 
					      factions.fly.other: true
 | 
				
			||||||
      factions.setpower: true
 | 
					      factions.setpower: true
 | 
				
			||||||
  factions.kit.rank1:
 | 
					  factions.kit.rank1:
 | 
				
			||||||
    default: false
 | 
					    default: false
 | 
				
			||||||
@@ -280,6 +285,7 @@ permissions:
 | 
				
			|||||||
      factions.flag.list: true
 | 
					      factions.flag.list: true
 | 
				
			||||||
      factions.flag.set: true
 | 
					      factions.flag.set: true
 | 
				
			||||||
      factions.flag.show: true
 | 
					      factions.flag.show: true
 | 
				
			||||||
 | 
					      factions.fly: true
 | 
				
			||||||
      factions.home: true
 | 
					      factions.home: true
 | 
				
			||||||
      factions.invite: true
 | 
					      factions.invite: true
 | 
				
			||||||
      factions.invite.list: true
 | 
					      factions.invite.list: true
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,6 +33,7 @@ import com.massivecraft.factions.engine.EngineFlagExplosion;
 | 
				
			|||||||
import com.massivecraft.factions.engine.EngineFlagFireSpread;
 | 
					import com.massivecraft.factions.engine.EngineFlagFireSpread;
 | 
				
			||||||
import com.massivecraft.factions.engine.EngineFlagSpawn;
 | 
					import com.massivecraft.factions.engine.EngineFlagSpawn;
 | 
				
			||||||
import com.massivecraft.factions.engine.EngineFlagZombiegrief;
 | 
					import com.massivecraft.factions.engine.EngineFlagZombiegrief;
 | 
				
			||||||
 | 
					import com.massivecraft.factions.engine.EngineFly;
 | 
				
			||||||
import com.massivecraft.factions.engine.EngineLastActivity;
 | 
					import com.massivecraft.factions.engine.EngineLastActivity;
 | 
				
			||||||
import com.massivecraft.factions.engine.EngineMotd;
 | 
					import com.massivecraft.factions.engine.EngineMotd;
 | 
				
			||||||
import com.massivecraft.factions.engine.EngineMoveChunk;
 | 
					import com.massivecraft.factions.engine.EngineMoveChunk;
 | 
				
			||||||
@@ -220,6 +221,7 @@ public class Factions extends MassivePlugin
 | 
				
			|||||||
			EngineFlagFireSpread.class,
 | 
								EngineFlagFireSpread.class,
 | 
				
			||||||
			EngineFlagSpawn.class,
 | 
								EngineFlagSpawn.class,
 | 
				
			||||||
			EngineFlagZombiegrief.class,
 | 
								EngineFlagZombiegrief.class,
 | 
				
			||||||
 | 
								EngineFly.class,
 | 
				
			||||||
			EngineLastActivity.class,
 | 
								EngineLastActivity.class,
 | 
				
			||||||
			EngineMotd.class,
 | 
								EngineMotd.class,
 | 
				
			||||||
			EngineMoveChunk.class,
 | 
								EngineMoveChunk.class,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,6 +37,8 @@ public enum Perm implements Identified
 | 
				
			|||||||
	FLAG_LIST,
 | 
						FLAG_LIST,
 | 
				
			||||||
	FLAG_SET,
 | 
						FLAG_SET,
 | 
				
			||||||
	FLAG_SHOW,
 | 
						FLAG_SHOW,
 | 
				
			||||||
 | 
						FLY,
 | 
				
			||||||
 | 
						FLY_OTHER,
 | 
				
			||||||
	HOME,
 | 
						HOME,
 | 
				
			||||||
	INVITE,
 | 
						INVITE,
 | 
				
			||||||
	INVITE_LIST,
 | 
						INVITE_LIST,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,6 +54,7 @@ public class CmdFactions extends FactionsCommand
 | 
				
			|||||||
	public CmdFactionsRelationOld cmdFactionsRelationOldEnemy = new CmdFactionsRelationOld("enemy");
 | 
						public CmdFactionsRelationOld cmdFactionsRelationOldEnemy = new CmdFactionsRelationOld("enemy");
 | 
				
			||||||
	public CmdFactionsPerm cmdFactionsPerm = new CmdFactionsPerm();
 | 
						public CmdFactionsPerm cmdFactionsPerm = new CmdFactionsPerm();
 | 
				
			||||||
	public CmdFactionsFlag cmdFactionsFlag = new CmdFactionsFlag();
 | 
						public CmdFactionsFlag cmdFactionsFlag = new CmdFactionsFlag();
 | 
				
			||||||
 | 
						public CmdFactionsFly cmdFactionsFly = new CmdFactionsFly();
 | 
				
			||||||
	public CmdFactionsUnstuck cmdFactionsUnstuck = new CmdFactionsUnstuck();
 | 
						public CmdFactionsUnstuck cmdFactionsUnstuck = new CmdFactionsUnstuck();
 | 
				
			||||||
	public CmdFactionsOverride cmdFactionsOverride = new CmdFactionsOverride();
 | 
						public CmdFactionsOverride cmdFactionsOverride = new CmdFactionsOverride();
 | 
				
			||||||
	public CmdFactionsDisband cmdFactionsDisband = new CmdFactionsDisband();
 | 
						public CmdFactionsDisband cmdFactionsDisband = new CmdFactionsDisband();
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										63
									
								
								src/com/massivecraft/factions/cmd/CmdFactionsFly.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								src/com/massivecraft/factions/cmd/CmdFactionsFly.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,63 @@
 | 
				
			|||||||
 | 
					package com.massivecraft.factions.cmd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.massivecraft.factions.engine.EngineFly;
 | 
				
			||||||
 | 
					import com.massivecraft.factions.entity.MPlayer;
 | 
				
			||||||
 | 
					import com.massivecraft.massivecore.MassiveException;
 | 
				
			||||||
 | 
					import com.massivecraft.massivecore.command.MassiveCommandToggle;
 | 
				
			||||||
 | 
					import com.massivecraft.massivecore.engine.EngineMassiveCorePlayerUpdate;
 | 
				
			||||||
 | 
					import com.massivecraft.massivecore.ps.PS;
 | 
				
			||||||
 | 
					import com.massivecraft.massivecore.util.IdUtil;
 | 
				
			||||||
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class CmdFactionsFly extends MassiveCommandToggle
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
						// INSTANCE
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static CmdFactionsFly i = new CmdFactionsFly();
 | 
				
			||||||
 | 
						public static CmdFactionsFly get() { return i; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
						// CONSTRUCT
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public CmdFactionsFly()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							super();
 | 
				
			||||||
 | 
							this.setAliases("fly");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
						// OVERRIDE
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public String getName()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return "faction flying";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public boolean getValue() throws MassiveException
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return MPlayer.get(sender).isFlying();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void setValue(boolean value) throws MassiveException
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							MPlayer mplayer = MPlayer.get(sender);
 | 
				
			||||||
 | 
							Player player = IdUtil.getPlayer(sender);
 | 
				
			||||||
 | 
							if (player == null) throw new MassiveException().addMsg("<b>Could not find player.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							PS ps = PS.valueOf(player);
 | 
				
			||||||
 | 
							if (value && !EngineFly.canFlyInTerritory(mplayer, ps))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								throw new MassiveException().addMsg("<b>You can't fly where you are.");
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mplayer.setFlying(value);
 | 
				
			||||||
 | 
							EngineMassiveCorePlayerUpdate.update(player, false);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										101
									
								
								src/com/massivecraft/factions/engine/EngineFly.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								src/com/massivecraft/factions/engine/EngineFly.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
				
			|||||||
 | 
					package com.massivecraft.factions.engine;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.massivecraft.factions.entity.BoardColl;
 | 
				
			||||||
 | 
					import com.massivecraft.factions.entity.Faction;
 | 
				
			||||||
 | 
					import com.massivecraft.factions.entity.MConf;
 | 
				
			||||||
 | 
					import com.massivecraft.factions.entity.MFlag;
 | 
				
			||||||
 | 
					import com.massivecraft.factions.entity.MPlayer;
 | 
				
			||||||
 | 
					import com.massivecraft.massivecore.Engine;
 | 
				
			||||||
 | 
					import com.massivecraft.massivecore.event.EventMassiveCorePlayerUpdate;
 | 
				
			||||||
 | 
					import com.massivecraft.massivecore.ps.PS;
 | 
				
			||||||
 | 
					import com.massivecraft.massivecore.util.MUtil;
 | 
				
			||||||
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
 | 
					import org.bukkit.event.EventHandler;
 | 
				
			||||||
 | 
					import org.bukkit.event.EventPriority;
 | 
				
			||||||
 | 
					import org.bukkit.event.player.PlayerMoveEvent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class EngineFly extends Engine
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
						// INSTANCE & CONSTRUCT
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static EngineFly i = new EngineFly();
 | 
				
			||||||
 | 
						public static EngineFly get() { return i; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
						// LISTENER
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
 | 
				
			||||||
 | 
						public void onMassiveCorePlayerUpdate(EventMassiveCorePlayerUpdate event)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// If we are updating a player ...
 | 
				
			||||||
 | 
							Player player = event.getPlayer();
 | 
				
			||||||
 | 
							if (MUtil.isntPlayer(player)) return;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// ... and that player isn't in creative or spectator mode ...
 | 
				
			||||||
 | 
							if (EventMassiveCorePlayerUpdate.isFlyAllowed(player, false)) return;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// ... and the player is alive ...
 | 
				
			||||||
 | 
							if (player.isDead()) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							MPlayer mplayer = MPlayer.get(player);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// ... and the player enables flying ...
 | 
				
			||||||
 | 
							if (!mplayer.isFlying()) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// ... and the player enables flying ...
 | 
				
			||||||
 | 
							if (!canFlyInTerritory(mplayer, PS.valueOf(player))) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// ... set allowed ...
 | 
				
			||||||
 | 
							event.setAllowed(true);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// ... set speed ...
 | 
				
			||||||
 | 
							event.setFlySpeed(MConf.get().flySpeed);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
 | 
				
			||||||
 | 
						public void moveChunkDetect(PlayerMoveEvent event)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// If the player is moving from one chunk to another ...
 | 
				
			||||||
 | 
							if (MUtil.isSameChunk(event)) return;
 | 
				
			||||||
 | 
							Player player = event.getPlayer();
 | 
				
			||||||
 | 
							if (MUtil.isntPlayer(player)) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// ... gather info on the player and the move ...
 | 
				
			||||||
 | 
							MPlayer mplayer = MPlayer.get(player);
 | 
				
			||||||
 | 
							PS chunkTo = PS.valueOf(event.getTo()).getChunk(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// ... and they are currently flying ...
 | 
				
			||||||
 | 
							if (!mplayer.isFlying()) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// ... but can't fly at the new place ...
 | 
				
			||||||
 | 
							if (canFlyInTerritory(mplayer, chunkTo)) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// ... then perhaps they should not be
 | 
				
			||||||
 | 
							mplayer.setFlying(false);
 | 
				
			||||||
 | 
							deactivateForPlayer(player);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static boolean canFlyInTerritory(MPlayer mplayer, PS ps)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							Faction faction = mplayer.getFaction();
 | 
				
			||||||
 | 
							Faction locationFaction = BoardColl.get().getFactionAt(ps.getChunk(true));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (faction != locationFaction) return false;
 | 
				
			||||||
 | 
							if (!faction.getFlag(MFlag.getFlagFly())) return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static void deactivateForPlayer(Player player)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							EventMassiveCorePlayerUpdate.resetFlyAllowed(player);
 | 
				
			||||||
 | 
							EventMassiveCorePlayerUpdate.resetFlyActive(player);
 | 
				
			||||||
 | 
							EventMassiveCorePlayerUpdate.resetFlySpeed(player);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							EventMassiveCorePlayerUpdate.run(player);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -322,6 +322,9 @@ public class MConf extends Entity<MConf>
 | 
				
			|||||||
	// Make faction disbanding a confirmation thing
 | 
						// Make faction disbanding a confirmation thing
 | 
				
			||||||
	public boolean requireConfirmationForFactionDisbanding = true;
 | 
						public boolean requireConfirmationForFactionDisbanding = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// At what speed can players fly with /f fly?
 | 
				
			||||||
 | 
						public float flySpeed = 0.1f;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
	// DENY COMMANDS
 | 
						// DENY COMMANDS
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,6 +34,7 @@ public class MFlag extends Entity<MFlag> implements Prioritized, Registerable, N
 | 
				
			|||||||
	public final static transient String ID_PERMANENT = "permanent";
 | 
						public final static transient String ID_PERMANENT = "permanent";
 | 
				
			||||||
	public final static transient String ID_PEACEFUL = "peaceful";
 | 
						public final static transient String ID_PEACEFUL = "peaceful";
 | 
				
			||||||
	public final static transient String ID_INFPOWER = "infpower";
 | 
						public final static transient String ID_INFPOWER = "infpower";
 | 
				
			||||||
 | 
						public final static transient String ID_FLY = "fly";
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public final static transient int PRIORITY_OPEN = 1_000;
 | 
						public final static transient int PRIORITY_OPEN = 1_000;
 | 
				
			||||||
	public final static transient int PRIORITY_MONSTERS = 2_000;
 | 
						public final static transient int PRIORITY_MONSTERS = 2_000;
 | 
				
			||||||
@@ -50,6 +51,7 @@ public class MFlag extends Entity<MFlag> implements Prioritized, Registerable, N
 | 
				
			|||||||
	public final static transient int PRIORITY_PERMANENT = 13_000;
 | 
						public final static transient int PRIORITY_PERMANENT = 13_000;
 | 
				
			||||||
	public final static transient int PRIORITY_PEACEFUL = 14_000;
 | 
						public final static transient int PRIORITY_PEACEFUL = 14_000;
 | 
				
			||||||
	public final static transient int PRIORITY_INFPOWER = 15_000;
 | 
						public final static transient int PRIORITY_INFPOWER = 15_000;
 | 
				
			||||||
 | 
						public final static transient int PRIORITY_FLY = 16_000;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
	// META: CORE
 | 
						// META: CORE
 | 
				
			||||||
@@ -89,6 +91,7 @@ public class MFlag extends Entity<MFlag> implements Prioritized, Registerable, N
 | 
				
			|||||||
		getFlagPermanent();
 | 
							getFlagPermanent();
 | 
				
			||||||
		getFlagPeaceful();
 | 
							getFlagPeaceful();
 | 
				
			||||||
		getFlagInfpower();
 | 
							getFlagInfpower();
 | 
				
			||||||
 | 
							getFlagFly();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public static MFlag getFlagOpen() { return getCreative(PRIORITY_OPEN, ID_OPEN, ID_OPEN, "Can the faction be joined without an invite?", "Anyone can join. No invite required.", "An invite is required to join.", false, true, true); }
 | 
						public static MFlag getFlagOpen() { return getCreative(PRIORITY_OPEN, ID_OPEN, ID_OPEN, "Can the faction be joined without an invite?", "Anyone can join. No invite required.", "An invite is required to join.", false, true, true); }
 | 
				
			||||||
@@ -106,6 +109,7 @@ public class MFlag extends Entity<MFlag> implements Prioritized, Registerable, N
 | 
				
			|||||||
	public static MFlag getFlagPermanent() { return getCreative(PRIORITY_PERMANENT, ID_PERMANENT, ID_PERMANENT, "Is the faction immune to deletion?", "The faction can NOT be deleted.", "The faction can be deleted.", false, false, true); }
 | 
						public static MFlag getFlagPermanent() { return getCreative(PRIORITY_PERMANENT, ID_PERMANENT, ID_PERMANENT, "Is the faction immune to deletion?", "The faction can NOT be deleted.", "The faction can be deleted.", false, false, true); }
 | 
				
			||||||
	public static MFlag getFlagPeaceful() { return getCreative(PRIORITY_PEACEFUL, ID_PEACEFUL, ID_PEACEFUL, "Is the faction in truce with everyone?", "The faction is in truce with everyone.", "The faction relations work as usual.", false, false, true); }
 | 
						public static MFlag getFlagPeaceful() { return getCreative(PRIORITY_PEACEFUL, ID_PEACEFUL, ID_PEACEFUL, "Is the faction in truce with everyone?", "The faction is in truce with everyone.", "The faction relations work as usual.", false, false, true); }
 | 
				
			||||||
	public static MFlag getFlagInfpower() { return getCreative(PRIORITY_INFPOWER, ID_INFPOWER, ID_INFPOWER, "Does the faction have infinite power?", "The faction has infinite power.", "The faction power works as usual.", false, false, true); }
 | 
						public static MFlag getFlagInfpower() { return getCreative(PRIORITY_INFPOWER, ID_INFPOWER, ID_INFPOWER, "Does the faction have infinite power?", "The faction has infinite power.", "The faction power works as usual.", false, false, true); }
 | 
				
			||||||
 | 
						public static MFlag getFlagFly() { return getCreative(PRIORITY_FLY, ID_FLY, ID_FLY, "Is flying allowed for members in faction territory?", "Members can fly in faction territory.", "Members can not fly in faction territory.", false, false, true); }
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public static MFlag getCreative(int priority, String id, String name, String desc, String descYes, String descNo, boolean standard, boolean editable, boolean visible)
 | 
						public static MFlag getCreative(int priority, String id, String name, String desc, String descYes, String descNo, boolean standard, boolean editable, boolean visible)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -175,6 +175,9 @@ public class MPlayer extends SenderEntity<MPlayer> implements FactionsParticipat
 | 
				
			|||||||
	// Null means default specified in MConf.
 | 
						// Null means default specified in MConf.
 | 
				
			||||||
	private Boolean territoryInfoTitles = null;
 | 
						private Boolean territoryInfoTitles = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Is the player doing faction flying?
 | 
				
			||||||
 | 
						private Boolean flying = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// The Faction this player is currently autoclaiming for.
 | 
						// The Faction this player is currently autoclaiming for.
 | 
				
			||||||
	// Null means the player isn't auto claiming.
 | 
						// Null means the player isn't auto claiming.
 | 
				
			||||||
	// NOTE: This field will not be saved to the database ever.
 | 
						// NOTE: This field will not be saved to the database ever.
 | 
				
			||||||
@@ -582,6 +585,20 @@ public class MPlayer extends SenderEntity<MPlayer> implements FactionsParticipat
 | 
				
			|||||||
		this.changed();
 | 
							this.changed();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
						// FIELD: fly
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public boolean isFlying()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return this.convertGet(this.flying, false, Perm.FLY);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void setFlying(Boolean flying)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.flying = this.convertSet(flying, this.flying, false);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
	// TITLE, NAME, FACTION NAME AND CHAT
 | 
						// TITLE, NAME, FACTION NAME AND CHAT
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user