Safe zones and faction homes :D :D
This commit is contained in:
		@@ -1,5 +1,5 @@
 | 
				
			|||||||
name: Factions
 | 
					name: Factions
 | 
				
			||||||
version: 1.1
 | 
					version: 1.1 alpha
 | 
				
			||||||
main: com.bukkit.mcteam.factions.Factions
 | 
					main: com.bukkit.mcteam.factions.Factions
 | 
				
			||||||
commands:
 | 
					commands:
 | 
				
			||||||
  f:
 | 
					  f:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -126,8 +126,10 @@ public class Board {
 | 
				
			|||||||
				} else {
 | 
									} else {
 | 
				
			||||||
					FLocation flocationHere = topLeft.getRelative(dx, dz);
 | 
										FLocation flocationHere = topLeft.getRelative(dx, dz);
 | 
				
			||||||
					Faction factionHere = getFactionAt(flocationHere);
 | 
										Faction factionHere = getFactionAt(flocationHere);
 | 
				
			||||||
					if (factionHere.getId() == 0) {
 | 
										if (factionHere.isNone()) {
 | 
				
			||||||
						row += ChatColor.GRAY+"-";
 | 
											row += ChatColor.GRAY+"-";
 | 
				
			||||||
 | 
										} else if (factionHere.isSafeZone()) {
 | 
				
			||||||
 | 
											row += ChatColor.GOLD+"+";
 | 
				
			||||||
					} else {
 | 
										} else {
 | 
				
			||||||
						row += factionHere.getRelation(faction).getColor()+"+";
 | 
											row += factionHere.getRelation(faction).getColor()+"+";
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,7 @@ import java.io.File;
 | 
				
			|||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
import java.util.*;
 | 
					import java.util.*;
 | 
				
			||||||
import org.bukkit.*;
 | 
					import org.bukkit.*;
 | 
				
			||||||
 | 
					import org.bukkit.entity.CreatureType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.bukkit.mcteam.util.DiscUtil;
 | 
					import com.bukkit.mcteam.util.DiscUtil;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -42,8 +43,12 @@ public class Conf {
 | 
				
			|||||||
	public static String chatTagFormat = "%s"+ChatColor.WHITE+" ";
 | 
						public static String chatTagFormat = "%s"+ChatColor.WHITE+" ";
 | 
				
			||||||
	public static String factionChatFormat = "%s"+ChatColor.WHITE+" %s";
 | 
						public static String factionChatFormat = "%s"+ChatColor.WHITE+" %s";
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public static int mapHeight = 8;
 | 
						public static boolean allowNoSlashCommand = true;
 | 
				
			||||||
	public static int mapWidth = 49;
 | 
						
 | 
				
			||||||
 | 
						public static double autoLeaveAfterDaysOfInactivity = 14;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static boolean homesEnabled = true;
 | 
				
			||||||
 | 
						public static boolean homesTeleportToOnDeath = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static double territoryShieldFactor = 0.5;
 | 
						public static double territoryShieldFactor = 0.5;
 | 
				
			||||||
	public static boolean territoryBlockCreepers = false;
 | 
						public static boolean territoryBlockCreepers = false;
 | 
				
			||||||
@@ -51,11 +56,12 @@ public class Conf {
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
	public static Set<Material> territoryProtectedMaterials = new HashSet<Material>();
 | 
						public static Set<Material> territoryProtectedMaterials = new HashSet<Material>();
 | 
				
			||||||
	public static Set<Material> territoryDenyUseageMaterials = new HashSet<Material>();
 | 
						public static Set<Material> territoryDenyUseageMaterials = new HashSet<Material>();
 | 
				
			||||||
	public static transient Set<Material> instaDestroyMaterials = new HashSet<Material>(); // This one is not really configuration therefore transient
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public static boolean allowNoSlashCommand = true;
 | 
					 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public static double autoLeaveFactionAfterDaysOfInactivity = 14;
 | 
						public static transient Set<CreatureType> safeZoneNerfedCreatureTypes = new HashSet<CreatureType>();
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static transient Set<Material> instaDestroyMaterials = new HashSet<Material>(); // This one is not really configuration therefore transient
 | 
				
			||||||
 | 
						public static transient int mapHeight = 8;
 | 
				
			||||||
 | 
						public static transient int mapWidth = 49;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	static {
 | 
						static {
 | 
				
			||||||
		territoryProtectedMaterials.add(Material.WOODEN_DOOR);
 | 
							territoryProtectedMaterials.add(Material.WOODEN_DOOR);
 | 
				
			||||||
@@ -81,6 +87,14 @@ public class Conf {
 | 
				
			|||||||
		instaDestroyMaterials.add(Material.SUGAR_CANE_BLOCK);
 | 
							instaDestroyMaterials.add(Material.SUGAR_CANE_BLOCK);
 | 
				
			||||||
		instaDestroyMaterials.add(Material.DIODE_BLOCK_OFF);
 | 
							instaDestroyMaterials.add(Material.DIODE_BLOCK_OFF);
 | 
				
			||||||
		instaDestroyMaterials.add(Material.DIODE_BLOCK_ON);
 | 
							instaDestroyMaterials.add(Material.DIODE_BLOCK_ON);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							safeZoneNerfedCreatureTypes.add(CreatureType.CREEPER);
 | 
				
			||||||
 | 
							safeZoneNerfedCreatureTypes.add(CreatureType.GHAST);
 | 
				
			||||||
 | 
							safeZoneNerfedCreatureTypes.add(CreatureType.PIG_ZOMBIE);
 | 
				
			||||||
 | 
							safeZoneNerfedCreatureTypes.add(CreatureType.SKELETON);
 | 
				
			||||||
 | 
							safeZoneNerfedCreatureTypes.add(CreatureType.SPIDER);
 | 
				
			||||||
 | 
							safeZoneNerfedCreatureTypes.add(CreatureType.SLIME);
 | 
				
			||||||
 | 
							safeZoneNerfedCreatureTypes.add(CreatureType.ZOMBIE);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -353,7 +353,7 @@ public class FPlayer {
 | 
				
			|||||||
	public void sendFactionHereMessage() {
 | 
						public void sendFactionHereMessage() {
 | 
				
			||||||
		Faction factionHere = Board.getFactionAt(new FLocation(this));
 | 
							Faction factionHere = Board.getFactionAt(new FLocation(this));
 | 
				
			||||||
		String msg = Conf.colorSystem+" ~ "+factionHere.getTag(this);
 | 
							String msg = Conf.colorSystem+" ~ "+factionHere.getTag(this);
 | 
				
			||||||
		if (factionHere.getId() != 0) {
 | 
							if (factionHere.getDescription().length() > 0) {
 | 
				
			||||||
			msg += " - "+factionHere.getDescription();
 | 
								msg += " - "+factionHere.getDescription();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		this.sendMessage(msg);
 | 
							this.sendMessage(msg);
 | 
				
			||||||
@@ -507,9 +507,16 @@ public class FPlayer {
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
	public static void autoLeaveOnInactivityRoutine() {
 | 
						public static void autoLeaveOnInactivityRoutine() {
 | 
				
			||||||
		long now = System.currentTimeMillis();
 | 
							long now = System.currentTimeMillis();
 | 
				
			||||||
		double toleranceMillis = Conf.autoLeaveFactionAfterDaysOfInactivity * 24 * 60 * 60 * 1000;
 | 
							double toleranceMillis = Conf.autoLeaveAfterDaysOfInactivity * 24 * 60 * 60 * 1000;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		for (FPlayer fplayer : FPlayer.getAll()) {
 | 
							for (FPlayer fplayer : FPlayer.getAll()) {
 | 
				
			||||||
 | 
								// Test if the player is immune
 | 
				
			||||||
 | 
								if (Factions.Permissions != null) {
 | 
				
			||||||
 | 
									if (Factions.Permissions.has(fplayer.getPlayer(), "factions.autoLeaveImmunity")) {
 | 
				
			||||||
 | 
										continue;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								
 | 
				
			||||||
			if (now - fplayer.getLastLoginTime() > toleranceMillis) {
 | 
								if (now - fplayer.getLastLoginTime() > toleranceMillis) {
 | 
				
			||||||
				fplayer.leave();
 | 
									fplayer.leave();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,6 +8,7 @@ import java.util.Map.Entry;
 | 
				
			|||||||
import java.util.logging.Level;
 | 
					import java.util.logging.Level;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.bukkit.ChatColor;
 | 
					import org.bukkit.ChatColor;
 | 
				
			||||||
 | 
					import org.bukkit.Location;
 | 
				
			||||||
import org.bukkit.entity.Player;
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.bukkit.mcteam.factions.struct.Relation;
 | 
					import com.bukkit.mcteam.factions.struct.Relation;
 | 
				
			||||||
@@ -32,6 +33,7 @@ public class Faction {
 | 
				
			|||||||
	private boolean open;
 | 
						private boolean open;
 | 
				
			||||||
	private String tag;
 | 
						private String tag;
 | 
				
			||||||
	private String description;
 | 
						private String description;
 | 
				
			||||||
 | 
						private Location home;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
	// Construct
 | 
						// Construct
 | 
				
			||||||
@@ -88,6 +90,34 @@ public class Faction {
 | 
				
			|||||||
		this.description = value;
 | 
							this.description = value;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						public void setHome(Location home) {
 | 
				
			||||||
 | 
							this.home = home;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public Location getHome() {
 | 
				
			||||||
 | 
							return home;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public boolean hasHome() {
 | 
				
			||||||
 | 
							return this.home != null;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						// -------------------------------
 | 
				
			||||||
 | 
						// Understand the types
 | 
				
			||||||
 | 
						// -------------------------------
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public boolean isNormal() {
 | 
				
			||||||
 | 
							return this.getId() > 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public boolean isNone() {
 | 
				
			||||||
 | 
							return this.getId() == 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public boolean isSafeZone() {
 | 
				
			||||||
 | 
							return this.getId() == -1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	// -------------------------------
 | 
						// -------------------------------
 | 
				
			||||||
	// Invites - uses lowercase name
 | 
						// Invites - uses lowercase name
 | 
				
			||||||
	// -------------------------------
 | 
						// -------------------------------
 | 
				
			||||||
@@ -124,7 +154,7 @@ public class Faction {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public Relation getRelation(Faction otherFaction) {
 | 
						public Relation getRelation(Faction otherFaction) {
 | 
				
			||||||
		if (otherFaction.getId() == 0 || this.getId() == 0) {
 | 
							if (otherFaction.isNone() || this.isNone()) {
 | 
				
			||||||
			return Relation.NEUTRAL;
 | 
								return Relation.NEUTRAL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (otherFaction.equals(this)) {
 | 
							if (otherFaction.equals(this)) {
 | 
				
			||||||
@@ -340,6 +370,15 @@ public class Faction {
 | 
				
			|||||||
			instances.put(faction.id, faction);
 | 
								instances.put(faction.id, faction);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
							// Make sure the safe zone faciton exists
 | 
				
			||||||
 | 
							if ( ! instances.containsKey(-1)) {
 | 
				
			||||||
 | 
								Faction faction = new Faction();
 | 
				
			||||||
 | 
								faction.tag = ChatColor.GOLD+"Safe Zone";
 | 
				
			||||||
 | 
								faction.description = "Free from PVP and monsters";
 | 
				
			||||||
 | 
								faction.id = -1;
 | 
				
			||||||
 | 
								instances.put(faction.id, faction);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
@@ -363,6 +402,14 @@ public class Faction {
 | 
				
			|||||||
		return instances.get(factionId);
 | 
							return instances.get(factionId);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						public static Faction getNone() {
 | 
				
			||||||
 | 
							return instances.get(0);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static Faction getSafeZone() {
 | 
				
			||||||
 | 
							return instances.get(-1);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	public static boolean exists(Integer factionId) {
 | 
						public static boolean exists(Integer factionId) {
 | 
				
			||||||
		return instances.containsKey(factionId);
 | 
							return instances.containsKey(factionId);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,8 +10,10 @@ import java.util.logging.Logger;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.Location;
 | 
				
			||||||
import org.bukkit.command.Command;
 | 
					import org.bukkit.command.Command;
 | 
				
			||||||
import org.bukkit.command.CommandSender;
 | 
					import org.bukkit.command.CommandSender;
 | 
				
			||||||
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
import org.bukkit.event.Event;
 | 
					import org.bukkit.event.Event;
 | 
				
			||||||
import org.bukkit.plugin.Plugin;
 | 
					import org.bukkit.plugin.Plugin;
 | 
				
			||||||
import org.bukkit.plugin.PluginManager;
 | 
					import org.bukkit.plugin.PluginManager;
 | 
				
			||||||
@@ -25,6 +27,7 @@ import com.bukkit.mcteam.factions.commands.FCommandCreate;
 | 
				
			|||||||
import com.bukkit.mcteam.factions.commands.FCommandDeinvite;
 | 
					import com.bukkit.mcteam.factions.commands.FCommandDeinvite;
 | 
				
			||||||
import com.bukkit.mcteam.factions.commands.FCommandDescription;
 | 
					import com.bukkit.mcteam.factions.commands.FCommandDescription;
 | 
				
			||||||
import com.bukkit.mcteam.factions.commands.FCommandHelp;
 | 
					import com.bukkit.mcteam.factions.commands.FCommandHelp;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.commands.FCommandHome;
 | 
				
			||||||
import com.bukkit.mcteam.factions.commands.FCommandInvite;
 | 
					import com.bukkit.mcteam.factions.commands.FCommandInvite;
 | 
				
			||||||
import com.bukkit.mcteam.factions.commands.FCommandJoin;
 | 
					import com.bukkit.mcteam.factions.commands.FCommandJoin;
 | 
				
			||||||
import com.bukkit.mcteam.factions.commands.FCommandKick;
 | 
					import com.bukkit.mcteam.factions.commands.FCommandKick;
 | 
				
			||||||
@@ -36,6 +39,8 @@ import com.bukkit.mcteam.factions.commands.FCommandOpen;
 | 
				
			|||||||
import com.bukkit.mcteam.factions.commands.FCommandRelationAlly;
 | 
					import com.bukkit.mcteam.factions.commands.FCommandRelationAlly;
 | 
				
			||||||
import com.bukkit.mcteam.factions.commands.FCommandRelationEnemy;
 | 
					import com.bukkit.mcteam.factions.commands.FCommandRelationEnemy;
 | 
				
			||||||
import com.bukkit.mcteam.factions.commands.FCommandRelationNeutral;
 | 
					import com.bukkit.mcteam.factions.commands.FCommandRelationNeutral;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.commands.FCommandSafeclaim;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.commands.FCommandSethome;
 | 
				
			||||||
import com.bukkit.mcteam.factions.commands.FCommandShow;
 | 
					import com.bukkit.mcteam.factions.commands.FCommandShow;
 | 
				
			||||||
import com.bukkit.mcteam.factions.commands.FCommandTag;
 | 
					import com.bukkit.mcteam.factions.commands.FCommandTag;
 | 
				
			||||||
import com.bukkit.mcteam.factions.commands.FCommandTitle;
 | 
					import com.bukkit.mcteam.factions.commands.FCommandTitle;
 | 
				
			||||||
@@ -64,6 +69,7 @@ public class Factions extends JavaPlugin {
 | 
				
			|||||||
	public final static Gson gson = new GsonBuilder()
 | 
						public final static Gson gson = new GsonBuilder()
 | 
				
			||||||
	.setPrettyPrinting()
 | 
						.setPrettyPrinting()
 | 
				
			||||||
	.excludeFieldsWithModifiers(Modifier.TRANSIENT, Modifier.VOLATILE)
 | 
						.excludeFieldsWithModifiers(Modifier.TRANSIENT, Modifier.VOLATILE)
 | 
				
			||||||
 | 
						.registerTypeAdapter(Location.class, new MyLocationTypeAdapter())
 | 
				
			||||||
	.create();
 | 
						.create();
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	private final FactionsPlayerListener playerListener = new FactionsPlayerListener();
 | 
						private final FactionsPlayerListener playerListener = new FactionsPlayerListener();
 | 
				
			||||||
@@ -96,6 +102,7 @@ public class Factions extends JavaPlugin {
 | 
				
			|||||||
		commands.add(new FCommandCreate());
 | 
							commands.add(new FCommandCreate());
 | 
				
			||||||
		commands.add(new FCommandDeinvite());
 | 
							commands.add(new FCommandDeinvite());
 | 
				
			||||||
		commands.add(new FCommandDescription());
 | 
							commands.add(new FCommandDescription());
 | 
				
			||||||
 | 
							commands.add(new FCommandHome());
 | 
				
			||||||
		commands.add(new FCommandInvite());
 | 
							commands.add(new FCommandInvite());
 | 
				
			||||||
		commands.add(new FCommandJoin());
 | 
							commands.add(new FCommandJoin());
 | 
				
			||||||
		commands.add(new FCommandKick());
 | 
							commands.add(new FCommandKick());
 | 
				
			||||||
@@ -107,6 +114,8 @@ public class Factions extends JavaPlugin {
 | 
				
			|||||||
		commands.add(new FCommandRelationAlly());
 | 
							commands.add(new FCommandRelationAlly());
 | 
				
			||||||
		commands.add(new FCommandRelationEnemy());
 | 
							commands.add(new FCommandRelationEnemy());
 | 
				
			||||||
		commands.add(new FCommandRelationNeutral());
 | 
							commands.add(new FCommandRelationNeutral());
 | 
				
			||||||
 | 
							commands.add(new FCommandSafeclaim());
 | 
				
			||||||
 | 
							commands.add(new FCommandSethome());
 | 
				
			||||||
		commands.add(new FCommandShow());
 | 
							commands.add(new FCommandShow());
 | 
				
			||||||
		commands.add(new FCommandTag());
 | 
							commands.add(new FCommandTag());
 | 
				
			||||||
		commands.add(new FCommandTitle());
 | 
							commands.add(new FCommandTitle());
 | 
				
			||||||
@@ -127,14 +136,15 @@ public class Factions extends JavaPlugin {
 | 
				
			|||||||
		// Register events
 | 
							// Register events
 | 
				
			||||||
		PluginManager pm = this.getServer().getPluginManager();
 | 
							PluginManager pm = this.getServer().getPluginManager();
 | 
				
			||||||
		pm.registerEvent(Event.Type.PLAYER_CHAT, this.playerListener, Event.Priority.Highest, this);
 | 
							pm.registerEvent(Event.Type.PLAYER_CHAT, this.playerListener, Event.Priority.Highest, this);
 | 
				
			||||||
		pm.registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, this.playerListener, Event.Priority.Normal, this);
 | 
					 | 
				
			||||||
		pm.registerEvent(Event.Type.PLAYER_ITEM, this.playerListener, Event.Priority.Normal, this);
 | 
							pm.registerEvent(Event.Type.PLAYER_ITEM, this.playerListener, Event.Priority.Normal, this);
 | 
				
			||||||
		pm.registerEvent(Event.Type.PLAYER_JOIN, this.playerListener, Event.Priority.Normal, this);
 | 
					 | 
				
			||||||
		pm.registerEvent(Event.Type.PLAYER_MOVE, this.playerListener, Event.Priority.Normal, this);
 | 
							pm.registerEvent(Event.Type.PLAYER_MOVE, this.playerListener, Event.Priority.Normal, this);
 | 
				
			||||||
		pm.registerEvent(Event.Type.PLAYER_QUIT, this.playerListener, Event.Priority.Normal, this);
 | 
							pm.registerEvent(Event.Type.PLAYER_JOIN, this.playerListener, Event.Priority.Normal, this);
 | 
				
			||||||
 | 
							pm.registerEvent(Event.Type.PLAYER_RESPAWN, this.playerListener, Event.Priority.High, this);
 | 
				
			||||||
		pm.registerEvent(Event.Type.ENTITY_DEATH, this.entityListener, Event.Priority.Normal, this);
 | 
							pm.registerEvent(Event.Type.ENTITY_DEATH, this.entityListener, Event.Priority.Normal, this);
 | 
				
			||||||
		pm.registerEvent(Event.Type.ENTITY_DAMAGED, this.entityListener, Event.Priority.Normal, this);
 | 
							pm.registerEvent(Event.Type.ENTITY_DAMAGED, this.entityListener, Event.Priority.Normal, this);
 | 
				
			||||||
		pm.registerEvent(Event.Type.ENTITY_EXPLODE, this.entityListener, Event.Priority.Normal, this);
 | 
							pm.registerEvent(Event.Type.ENTITY_EXPLODE, this.entityListener, Event.Priority.Normal, this);
 | 
				
			||||||
 | 
							pm.registerEvent(Event.Type.CREATURE_SPAWN, this.entityListener, Event.Priority.Normal, this);
 | 
				
			||||||
 | 
							pm.registerEvent(Event.Type.ENTITY_TARGET, this.entityListener, Event.Priority.Normal, this);
 | 
				
			||||||
		pm.registerEvent(Event.Type.BLOCK_DAMAGED, this.blockListener, Event.Priority.Normal, this);
 | 
							pm.registerEvent(Event.Type.BLOCK_DAMAGED, this.blockListener, Event.Priority.Normal, this);
 | 
				
			||||||
		pm.registerEvent(Event.Type.BLOCK_PLACED, this.blockListener, Event.Priority.Normal, this);
 | 
							pm.registerEvent(Event.Type.BLOCK_PLACED, this.blockListener, Event.Priority.Normal, this);
 | 
				
			||||||
		pm.registerEvent(Event.Type.BLOCK_INTERACT, this.blockListener, Event.Priority.Normal, this);
 | 
							pm.registerEvent(Event.Type.BLOCK_INTERACT, this.blockListener, Event.Priority.Normal, this);
 | 
				
			||||||
@@ -156,6 +166,21 @@ public class Factions extends JavaPlugin {
 | 
				
			|||||||
	// Integration with other plugins
 | 
						// Integration with other plugins
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						private void setupHelp() {
 | 
				
			||||||
 | 
							if (helpPlugin != null) {
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							Plugin test = this.getServer().getPluginManager().getPlugin("Help");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if (test != null) {
 | 
				
			||||||
 | 
								helpPlugin = ((Help) test);
 | 
				
			||||||
 | 
								Factions.log("Found and will use plugin "+helpPlugin.getDescription().getFullName());
 | 
				
			||||||
 | 
								helpPlugin.registerCommand(this.getBaseCommand()+" help *[page]", "Factions plugin help.", this, false);
 | 
				
			||||||
 | 
								helpPlugin.registerCommand("help factions", "instead use: /f help", helpPlugin, true);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	private void setupPermissions() {
 | 
						private void setupPermissions() {
 | 
				
			||||||
		if (Permissions != null) {
 | 
							if (Permissions != null) {
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
@@ -171,21 +196,38 @@ public class Factions extends JavaPlugin {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	private void setupHelp() {
 | 
						// -------------------------------------------- //
 | 
				
			||||||
		if (helpPlugin != null) {
 | 
						// Test rights
 | 
				
			||||||
			return;
 | 
						// -------------------------------------------- //
 | 
				
			||||||
		}
 | 
						
 | 
				
			||||||
		
 | 
						public static boolean hasPermParticipate(CommandSender sender) {
 | 
				
			||||||
		Plugin test = this.getServer().getPluginManager().getPlugin("Help");
 | 
							return hasPerm(sender, "factions.participate", false);
 | 
				
			||||||
		
 | 
						}
 | 
				
			||||||
		if (test != null) {
 | 
						
 | 
				
			||||||
			helpPlugin = ((Help) test);
 | 
						public static boolean hasPermCreate(CommandSender sender) {
 | 
				
			||||||
			Factions.log("Found and will use plugin "+helpPlugin.getDescription().getFullName());
 | 
							return hasPerm(sender, "factions.create", false);
 | 
				
			||||||
			helpPlugin.registerCommand(this.getBaseCommand()+" help *[page]", "Factions plugin help.", this, false);
 | 
						}
 | 
				
			||||||
			helpPlugin.registerCommand("help factions", "instead use: /f help", helpPlugin, true);
 | 
						
 | 
				
			||||||
		}
 | 
						public static boolean hasPermManageSafeZone(CommandSender sender) {
 | 
				
			||||||
 | 
							return hasPerm(sender, "factions.manageSafeZone", true);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static boolean hasPermAutoLeaveImmunity(CommandSender sender) {
 | 
				
			||||||
 | 
							return hasPerm(sender, "factions.autoLeaveImmunity", true);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private static boolean hasPerm(CommandSender sender, String permNode, boolean fallbackOnlyOp) {
 | 
				
			||||||
 | 
							if (Factions.Permissions == null || ! (sender instanceof Player)) {
 | 
				
			||||||
 | 
								return fallbackOnlyOp == false || sender.isOp();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if (sender instanceof Player) {
 | 
				
			||||||
 | 
								Player player = (Player)sender;
 | 
				
			||||||
 | 
								return Factions.Permissions.has(player, permNode); 
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
	// Commands
 | 
						// Commands
 | 
				
			||||||
@@ -247,6 +289,7 @@ public class Factions extends JavaPlugin {
 | 
				
			|||||||
		FPlayer.save();
 | 
							FPlayer.save();
 | 
				
			||||||
		Faction.save();
 | 
							Faction.save();
 | 
				
			||||||
		Board.save();
 | 
							Board.save();
 | 
				
			||||||
 | 
							Conf.save();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										51
									
								
								src/com/bukkit/mcteam/factions/MyLocationTypeAdapter.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								src/com/bukkit/mcteam/factions/MyLocationTypeAdapter.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					package com.bukkit.mcteam.factions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.lang.reflect.Type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.Location;
 | 
				
			||||||
 | 
					import org.bukkit.World;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.gson.JsonDeserializationContext;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.gson.JsonDeserializer;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.gson.JsonElement;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.gson.JsonObject;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.gson.JsonParseException;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.gson.JsonSerializationContext;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.gson.JsonSerializer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class MyLocationTypeAdapter implements JsonDeserializer<Location>, JsonSerializer<Location> {
 | 
				
			||||||
 | 
						private static final String WORLD = "world";
 | 
				
			||||||
 | 
						private static final String X = "x";
 | 
				
			||||||
 | 
						private static final String Y = "y";
 | 
				
			||||||
 | 
						private static final String Z = "z";
 | 
				
			||||||
 | 
						private static final String YAW = "yaw";
 | 
				
			||||||
 | 
						private static final String PITCH = "pitch";
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public Location deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
 | 
				
			||||||
 | 
							JsonObject obj = json.getAsJsonObject();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							World world = Factions.instance.getServer().getWorld(obj.get(WORLD).getAsString());
 | 
				
			||||||
 | 
							double x = obj.get(X).getAsDouble();
 | 
				
			||||||
 | 
							double y = obj.get(Y).getAsDouble();
 | 
				
			||||||
 | 
							double z = obj.get(Z).getAsDouble();
 | 
				
			||||||
 | 
							float yaw = obj.get(YAW).getAsFloat();
 | 
				
			||||||
 | 
							float pitch = obj.get(PITCH).getAsFloat();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return new Location(world, x, y, z, yaw, pitch);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public JsonElement serialize(Location src, Type typeOfSrc, JsonSerializationContext context) {
 | 
				
			||||||
 | 
							JsonObject obj = new JsonObject();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							obj.addProperty(WORLD, src.getWorld().getName());
 | 
				
			||||||
 | 
							obj.addProperty(X, src.getX());
 | 
				
			||||||
 | 
							obj.addProperty(Y, src.getY());
 | 
				
			||||||
 | 
							obj.addProperty(Z, src.getZ());
 | 
				
			||||||
 | 
							obj.addProperty(YAW, src.getYaw());
 | 
				
			||||||
 | 
							obj.addProperty(PITCH, src.getPitch());
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return obj;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -15,12 +15,9 @@ import com.bukkit.mcteam.factions.util.TextUtil;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public class FBaseCommand {
 | 
					public class FBaseCommand {
 | 
				
			||||||
	public List<String> aliases;
 | 
						public List<String> aliases;
 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	public List<String> requiredParameters;
 | 
						public List<String> requiredParameters;
 | 
				
			||||||
	public List<String> optionalParameters;
 | 
						public List<String> optionalParameters;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public String permissions;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	public String helpNameAndParams;
 | 
						public String helpNameAndParams;
 | 
				
			||||||
	public String helpDescription;
 | 
						public String helpDescription;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
@@ -33,12 +30,11 @@ public class FBaseCommand {
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FBaseCommand() {
 | 
						public FBaseCommand() {
 | 
				
			||||||
 | 
							aliases = new ArrayList<String>();
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
							requiredParameters = new ArrayList<String>();
 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
							optionalParameters = new ArrayList<String>();
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		permissions = "";
 | 
							senderMustBePlayer = true;
 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = false;
 | 
					 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		helpNameAndParams = "fail!";
 | 
							helpNameAndParams = "fail!";
 | 
				
			||||||
		helpDescription = "no description";
 | 
							helpDescription = "no description";
 | 
				
			||||||
@@ -47,12 +43,7 @@ public class FBaseCommand {
 | 
				
			|||||||
	public List<String> getAliases() {
 | 
						public List<String> getAliases() {
 | 
				
			||||||
		return aliases;
 | 
							return aliases;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
							
 | 
				
			||||||
	public String getBaseName() {
 | 
					 | 
				
			||||||
		// TODO fetch from the plugin.yaml or something...
 | 
					 | 
				
			||||||
		return "f";
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	public void execute(CommandSender sender, List<String> parameters) {
 | 
						public void execute(CommandSender sender, List<String> parameters) {
 | 
				
			||||||
		this.sender = sender;
 | 
							this.sender = sender;
 | 
				
			||||||
		this.parameters = parameters;
 | 
							this.parameters = parameters;
 | 
				
			||||||
@@ -83,16 +74,14 @@ public class FBaseCommand {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// Test if the number of params is correct.
 | 
					 | 
				
			||||||
	// TODO print usage
 | 
					 | 
				
			||||||
	public boolean validateCall() {
 | 
						public boolean validateCall() {
 | 
				
			||||||
		if( ! testPermission(sender)) {
 | 
							if ( this.senderMustBePlayer && ! (sender instanceof Player)) {
 | 
				
			||||||
			sendMessage("You do not have sufficient permissions to use this command.");
 | 
								sendMessage("This command can only be used by ingame players.");
 | 
				
			||||||
			return false;
 | 
								return false;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if ( this.senderMustBePlayer && ! (sender instanceof Player)) {
 | 
							if( ! hasPermission(sender)) {
 | 
				
			||||||
			sendMessage("This command can only be used by ingame players.");
 | 
								sendMessage("You lack the permissions to "+this.helpDescription.toLowerCase()+".");
 | 
				
			||||||
			return false;
 | 
								return false;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@@ -104,26 +93,29 @@ public class FBaseCommand {
 | 
				
			|||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public boolean testPermission(CommandSender sender) {
 | 
						public boolean hasPermission(CommandSender sender) {
 | 
				
			||||||
		if (sender.isOp()) {
 | 
							return Factions.hasPermParticipate(sender);
 | 
				
			||||||
			return true;
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						/*public boolean testPermission(CommandSender sender) {
 | 
				
			||||||
 | 
							// There are two cases where we default to op:
 | 
				
			||||||
 | 
							// 1. Permissions is not installed
 | 
				
			||||||
 | 
							// 2. The sender is not a player
 | 
				
			||||||
 | 
							if ( Factions.Permissions == null || (! (sender instanceof Player))) {
 | 
				
			||||||
 | 
								if (this.opOnly && sender.isOp()) {
 | 
				
			||||||
 | 
									return true;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
							// No permissions are needed to use this command.
 | 
				
			||||||
		if (this.permissions.length() == 0) {
 | 
							if (this.permissions.length() == 0) {
 | 
				
			||||||
			return true;
 | 
								return true;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if ( ! (sender instanceof Player)) {
 | 
					 | 
				
			||||||
			return false;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		if (Factions.Permissions == null) {
 | 
					 | 
				
			||||||
			return false;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		Player player = (Player)sender;
 | 
							Player player = (Player)sender;
 | 
				
			||||||
		return Factions.Permissions.has(player, this.permissions);		
 | 
							return Factions.Permissions.has(player, this.permissions);		
 | 
				
			||||||
	}
 | 
						}*/
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
	// Help and usage description
 | 
						// Help and usage description
 | 
				
			||||||
@@ -135,7 +127,7 @@ public class FBaseCommand {
 | 
				
			|||||||
			ret += Conf.colorCommand;
 | 
								ret += Conf.colorCommand;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		ret += this.getBaseName()+ " " +TextUtil.implode(this.getAliases(), ",")+" ";
 | 
							ret += Factions.instance.getBaseCommand()+ " " +TextUtil.implode(this.getAliases(), ",")+" ";
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		List<String> parts = new ArrayList<String>();
 | 
							List<String> parts = new ArrayList<String>();
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@@ -167,10 +159,6 @@ public class FBaseCommand {
 | 
				
			|||||||
		return getUseageTemplate(true);
 | 
							return getUseageTemplate(true);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public void helpRegister() {
 | 
					 | 
				
			||||||
		Factions.helpPlugin.registerCommand(this.getUseageTemplate(false), this.helpDescription, Factions.instance, false, permissions);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
	// Assertions
 | 
						// Assertions
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,5 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
import com.bukkit.mcteam.factions.FPlayer;
 | 
					import com.bukkit.mcteam.factions.FPlayer;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Faction;
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
@@ -10,17 +8,10 @@ import com.bukkit.mcteam.factions.struct.Role;
 | 
				
			|||||||
public class FCommandAdmin extends FBaseCommand {
 | 
					public class FCommandAdmin extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandAdmin() {
 | 
						public FCommandAdmin() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("admin");
 | 
							aliases.add("admin");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		requiredParameters.add("player name");
 | 
							requiredParameters.add("player name");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Hand over your admin rights";
 | 
							helpDescription = "Hand over your admin rights";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,21 +1,11 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class FCommandChat extends FBaseCommand {
 | 
					public class FCommandChat extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandChat() {
 | 
						public FCommandChat() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("chat");
 | 
							aliases.add("chat");
 | 
				
			||||||
		aliases.add("c");
 | 
							aliases.add("c");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Switch faction only chat on and off";
 | 
							helpDescription = "Switch faction only chat on and off";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,5 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.bukkit.mcteam.factions.Board;
 | 
					import com.bukkit.mcteam.factions.Board;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
import com.bukkit.mcteam.factions.FLocation;
 | 
					import com.bukkit.mcteam.factions.FLocation;
 | 
				
			||||||
@@ -12,16 +10,8 @@ import com.bukkit.mcteam.factions.struct.Role;
 | 
				
			|||||||
public class FCommandClaim extends FBaseCommand {
 | 
					public class FCommandClaim extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandClaim() {
 | 
						public FCommandClaim() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("claim");
 | 
							aliases.add("claim");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Claim the land where you are standing";
 | 
							helpDescription = "Claim the land where you are standing";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
@@ -54,8 +44,17 @@ public class FCommandClaim extends FBaseCommand {
 | 
				
			|||||||
			return;
 | 
								return;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if (otherFaction.getId() != 0) {
 | 
							if (otherFaction.isSafeZone()) {
 | 
				
			||||||
			if ( ! otherFaction.hasLandInflation()) { // TODO more messages WARN current faction most importantly
 | 
								sendMessage("You can not claim a SafeZone.");
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if (otherFaction.isNone()) {
 | 
				
			||||||
 | 
								myFaction.sendMessage(me.getNameAndRelevant(myFaction)+Conf.colorSystem+" claimed some new land :D");
 | 
				
			||||||
 | 
							} else { //if (otherFaction.isNormal()) {
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								if ( ! otherFaction.hasLandInflation()) {
 | 
				
			||||||
 | 
									 // TODO more messages WARN current faction most importantly
 | 
				
			||||||
				sendMessage(me.getRelationColor(otherFaction)+otherFaction.getTag()+Conf.colorSystem+" owns this land and is strong enough to keep it.");
 | 
									sendMessage(me.getRelationColor(otherFaction)+otherFaction.getTag()+Conf.colorSystem+" owns this land and is strong enough to keep it.");
 | 
				
			||||||
				return;
 | 
									return;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -64,11 +63,7 @@ public class FCommandClaim extends FBaseCommand {
 | 
				
			|||||||
				sendMessage("You must start claiming land at the border of the territory.");
 | 
									sendMessage("You must start claiming land at the border of the territory.");
 | 
				
			||||||
				return;
 | 
									return;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
								
 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		if (otherFaction.getId() == 0) {
 | 
					 | 
				
			||||||
			myFaction.sendMessage(me.getNameAndRelevant(myFaction)+Conf.colorSystem+" claimed some new land :D");
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			// ASDF claimed some of your land 450 blocks NNW of you.
 | 
								// ASDF claimed some of your land 450 blocks NNW of you.
 | 
				
			||||||
			// ASDf claimed some land from FACTION NAME
 | 
								// ASDf claimed some land from FACTION NAME
 | 
				
			||||||
			otherFaction.sendMessage(me.getNameAndRelevant(otherFaction)+Conf.colorSystem+" stole some of your land :O");
 | 
								otherFaction.sendMessage(me.getNameAndRelevant(otherFaction)+Conf.colorSystem+" stole some of your land :O");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,28 +2,29 @@ package com.bukkit.mcteam.factions.commands;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.command.CommandSender;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
import com.bukkit.mcteam.factions.FPlayer;
 | 
					import com.bukkit.mcteam.factions.FPlayer;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Faction;
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.Factions;
 | 
				
			||||||
import com.bukkit.mcteam.factions.struct.Role;
 | 
					import com.bukkit.mcteam.factions.struct.Role;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FCommandCreate extends FBaseCommand {
 | 
					public class FCommandCreate extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandCreate() {
 | 
						public FCommandCreate() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("create");
 | 
							aliases.add("create");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		requiredParameters.add("faction tag");
 | 
							requiredParameters.add("faction tag");
 | 
				
			||||||
		
 | 
					
 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Create a new faction";
 | 
							helpDescription = "Create a new faction";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public boolean hasPermission(CommandSender sender) {
 | 
				
			||||||
 | 
							return Factions.hasPermCreate(sender);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	public void perform() {
 | 
						public void perform() {
 | 
				
			||||||
		String tag = parameters.get(0);
 | 
							String tag = parameters.get(0);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@@ -52,8 +53,7 @@ public class FCommandCreate extends FBaseCommand {
 | 
				
			|||||||
			follower.sendMessage(me.getNameAndRelevant(follower)+Conf.colorSystem+" created a new faction "+faction.getTag(follower));
 | 
								follower.sendMessage(me.getNameAndRelevant(follower)+Conf.colorSystem+" created a new faction "+faction.getTag(follower));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		sendMessage("You should now:");
 | 
							sendMessage("You should now: " + new FCommandDescription().getUseageTemplate(true, true));
 | 
				
			||||||
		sendMessage( new FCommandDescription().getUseageTemplate() );
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,5 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
import com.bukkit.mcteam.factions.FPlayer;
 | 
					import com.bukkit.mcteam.factions.FPlayer;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Faction;
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
@@ -10,18 +8,11 @@ import com.bukkit.mcteam.factions.struct.Role;
 | 
				
			|||||||
public class FCommandDeinvite extends FBaseCommand {
 | 
					public class FCommandDeinvite extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandDeinvite() {
 | 
						public FCommandDeinvite() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("deinvite");
 | 
							aliases.add("deinvite");
 | 
				
			||||||
		aliases.add("deinv");
 | 
							aliases.add("deinv");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		requiredParameters.add("player name");
 | 
							requiredParameters.add("player name");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Remove a pending invitation";
 | 
							helpDescription = "Remove a pending invitation";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,5 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
import com.bukkit.mcteam.factions.FPlayer;
 | 
					import com.bukkit.mcteam.factions.FPlayer;
 | 
				
			||||||
import com.bukkit.mcteam.factions.struct.Role;
 | 
					import com.bukkit.mcteam.factions.struct.Role;
 | 
				
			||||||
@@ -10,17 +8,10 @@ import com.bukkit.mcteam.factions.util.TextUtil;
 | 
				
			|||||||
public class FCommandDescription extends FBaseCommand {
 | 
					public class FCommandDescription extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandDescription() {
 | 
						public FCommandDescription() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("desc");
 | 
							aliases.add("desc");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		requiredParameters.add("desc");
 | 
							requiredParameters.add("desc");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Change the faction description";
 | 
							helpDescription = "Change the faction description";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,28 +2,27 @@ package com.bukkit.mcteam.factions.commands;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import org.bukkit.command.CommandSender;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.bukkit.mcteam.factions.util.TextUtil;
 | 
					import com.bukkit.mcteam.factions.util.TextUtil;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FCommandHelp extends FBaseCommand {
 | 
					public class FCommandHelp extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandHelp() {
 | 
						public FCommandHelp() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("help");
 | 
							aliases.add("help");
 | 
				
			||||||
		aliases.add("h");
 | 
							aliases.add("h");
 | 
				
			||||||
		aliases.add("?");
 | 
							aliases.add("?");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
							optionalParameters.add("page");		
 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters.add("page");
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = false;
 | 
					 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		helpDescription = "Display a help page";
 | 
							helpDescription = "Display a help page";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public boolean hasPermission(CommandSender sender) {
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	public void perform() {
 | 
						public void perform() {
 | 
				
			||||||
		int page = 1;
 | 
							int page = 1;
 | 
				
			||||||
		if (parameters.size() > 0) {
 | 
							if (parameters.size() > 0) {
 | 
				
			||||||
@@ -60,67 +59,74 @@ public class FCommandHelp extends FBaseCommand {
 | 
				
			|||||||
		pageLines.add( new FCommandJoin().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandJoin().getUseageTemplate(true, true) );
 | 
				
			||||||
		pageLines.add( new FCommandLeave().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandLeave().getUseageTemplate(true, true) );
 | 
				
			||||||
		pageLines.add( new FCommandChat().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandChat().getUseageTemplate(true, true) );
 | 
				
			||||||
		pageLines.add( new FCommandCreate().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandHome().getUseageTemplate(true, true) );
 | 
				
			||||||
		pageLines.add( new FCommandTag().getUseageTemplate(true, true) );
 | 
							pageLines.add( "Learn how to create a faction on the next page." );
 | 
				
			||||||
		pageLines.add( new FCommandDescription().getUseageTemplate(true, true) );
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpPages.add(pageLines);
 | 
							helpPages.add(pageLines);
 | 
				
			||||||
		pageLines = new ArrayList<String>();
 | 
					 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
							pageLines = new ArrayList<String>();
 | 
				
			||||||
 | 
							pageLines.add( "Create a faction using these two commands:" );
 | 
				
			||||||
 | 
							pageLines.add( new FCommandCreate().getUseageTemplate(true, true) );
 | 
				
			||||||
 | 
							pageLines.add( new FCommandDescription().getUseageTemplate(true, true) );
 | 
				
			||||||
 | 
							pageLines.add( "You might wan't to close it and use invitations:" );
 | 
				
			||||||
		pageLines.add( new FCommandOpen().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandOpen().getUseageTemplate(true, true) );
 | 
				
			||||||
		pageLines.add( new FCommandTitle().getUseageTemplate(true, true) );
 | 
					 | 
				
			||||||
		pageLines.add( new FCommandInvite().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandInvite().getUseageTemplate(true, true) );
 | 
				
			||||||
		pageLines.add( new FCommandDeinvite().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandDeinvite().getUseageTemplate(true, true) );
 | 
				
			||||||
 | 
							pageLines.add( "And don't forget to set your home:" );
 | 
				
			||||||
 | 
							pageLines.add( new FCommandSethome().getUseageTemplate(true, true) );
 | 
				
			||||||
 | 
							helpPages.add(pageLines);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							pageLines = new ArrayList<String>();
 | 
				
			||||||
 | 
							pageLines.add( "Faction can claim land that will be protected." );
 | 
				
			||||||
		pageLines.add( new FCommandClaim().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandClaim().getUseageTemplate(true, true) );
 | 
				
			||||||
		pageLines.add( new FCommandUnclaim().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandUnclaim().getUseageTemplate(true, true) );
 | 
				
			||||||
 | 
							pageLines.add( new FCommandTag().getUseageTemplate(true, true) );
 | 
				
			||||||
		pageLines.add( new FCommandKick().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandKick().getUseageTemplate(true, true) );
 | 
				
			||||||
		pageLines.add( new FCommandMod().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandMod().getUseageTemplate(true, true) );
 | 
				
			||||||
		pageLines.add( new FCommandAdmin().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandAdmin().getUseageTemplate(true, true) );
 | 
				
			||||||
		
 | 
							pageLines.add( new FCommandTitle().getUseageTemplate(true, true) );
 | 
				
			||||||
 | 
							pageLines.add( "Player titles are just for fun. No rules connected to them." );
 | 
				
			||||||
		helpPages.add(pageLines);
 | 
							helpPages.add(pageLines);
 | 
				
			||||||
		pageLines = new ArrayList<String>();
 | 
					 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
							pageLines = new ArrayList<String>();
 | 
				
			||||||
		pageLines.add( new FCommandRelationAlly().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandRelationAlly().getUseageTemplate(true, true) );
 | 
				
			||||||
		pageLines.add( new FCommandRelationNeutral().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandRelationNeutral().getUseageTemplate(true, true) );
 | 
				
			||||||
		pageLines.add( new FCommandRelationEnemy().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandRelationEnemy().getUseageTemplate(true, true) );
 | 
				
			||||||
		pageLines.add("");
 | 
							pageLines.add("");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"Set the relation you WISH to have with another faction.");
 | 
							pageLines.add("Set the relation you WISH to have with another faction.");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"Your default relation with other factions will be neutral.");
 | 
							pageLines.add("Your default relation with other factions will be neutral.");
 | 
				
			||||||
		pageLines.add("");
 | 
							pageLines.add("");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"If BOTH factions choose \"ally\" you will be allies.");
 | 
							pageLines.add("If BOTH factions choose \"ally\" you will be allies.");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"If ONE faction chooses \"enemy\" you will be enemies.");
 | 
							pageLines.add("If ONE faction chooses \"enemy\" you will be enemies.");
 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpPages.add(pageLines);
 | 
							helpPages.add(pageLines);
 | 
				
			||||||
		pageLines = new ArrayList<String>();
 | 
					 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"You can never hurt members or allies.");
 | 
							pageLines = new ArrayList<String>();
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"You can not hurt neutrals in their own territory.");
 | 
							pageLines.add("You can never hurt members or allies.");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"You can always hurt enemies and players without faction.");
 | 
							pageLines.add("You can not hurt neutrals in their own territory.");
 | 
				
			||||||
 | 
							pageLines.add("You can always hurt enemies and players without faction.");
 | 
				
			||||||
		pageLines.add("");
 | 
							pageLines.add("");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"Damage from enemies is reduced in your own territory.");
 | 
							pageLines.add("Damage from enemies is reduced in your own territory.");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"When you die you lose power. It is restored over time.");
 | 
							pageLines.add("When you die you lose power. It is restored over time.");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"The power of a faction is the sum of all member power.");
 | 
							pageLines.add("The power of a faction is the sum of all member power.");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"The power of a faction determines how much land it can hold.");
 | 
							pageLines.add("The power of a faction determines how much land it can hold.");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"You can claim land from factions with too little power.");
 | 
							pageLines.add("You can claim land from factions with too little power.");
 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpPages.add(pageLines);
 | 
							helpPages.add(pageLines);
 | 
				
			||||||
		pageLines = new ArrayList<String>();
 | 
					 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"Only faction members can build and destroy in their own");
 | 
							pageLines = new ArrayList<String>();
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"territory. Usage of the following items is also restricted:");
 | 
							pageLines.add("Only faction members can build and destroy in their own");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"Door, Chest, Furnace and Dispenser.");
 | 
							pageLines.add("territory. Usage of the following items is also restricted:");
 | 
				
			||||||
		pageLines.add(" ");
 | 
							pageLines.add("Door, Chest, Furnace and Dispenser.");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"Make sure to put pressure plates in front of doors for your");
 | 
							pageLines.add("");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"guest visitors. Otherwise they can't get through. You can ");
 | 
							pageLines.add("Make sure to put pressure plates in front of doors for your");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"also use this to create member only areas.");
 | 
							pageLines.add("guest visitors. Otherwise they can't get through. You can");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"As dispensers are protected, you can create traps without");
 | 
							pageLines.add("also use this to create member only areas.");
 | 
				
			||||||
		pageLines.add(Conf.colorSystem+"worrying about those arrows getting stolen.");
 | 
							pageLines.add("As dispensers are protected, you can create traps without");
 | 
				
			||||||
 | 
							pageLines.add("worrying about those arrows getting stolen.");
 | 
				
			||||||
		helpPages.add(pageLines);
 | 
							helpPages.add(pageLines);
 | 
				
			||||||
		pageLines = new ArrayList<String>();
 | 
					 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
							pageLines = new ArrayList<String>();
 | 
				
			||||||
 | 
							pageLines.add("Finally some commands for the server admins:");
 | 
				
			||||||
		pageLines.add( new FCommandVersion().getUseageTemplate(true, true) );
 | 
							pageLines.add( new FCommandVersion().getUseageTemplate(true, true) );
 | 
				
			||||||
		
 | 
							pageLines.add( new FCommandSafeclaim().getUseageTemplate(true, true) );
 | 
				
			||||||
		helpPages.add(pageLines);
 | 
							helpPages.add(pageLines);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										36
									
								
								src/com/bukkit/mcteam/factions/commands/FCommandHome.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								src/com/bukkit/mcteam/factions/commands/FCommandHome.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.struct.Role;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class FCommandHome extends FBaseCommand {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public FCommandHome() {
 | 
				
			||||||
 | 
							aliases.add("home");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							helpDescription = "Teleport to the faction home";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public void perform() {
 | 
				
			||||||
 | 
							if ( ! assertHasFaction()) {
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if ( ! Conf.homesEnabled) {
 | 
				
			||||||
 | 
								me.sendMessage("Sorry, Faction homes are disabled on this server.");
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							Faction myFaction = me.getFaction();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if ( ! myFaction.hasHome()) {
 | 
				
			||||||
 | 
								me.sendMessage("You faction does not have a home. " + (me.getRole().value < Role.MODERATOR.value ? " Ask your leader to:" : "You should:"));
 | 
				
			||||||
 | 
								me.sendMessage(new FCommandSethome().getUseageTemplate(true, true));
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							player.teleportTo(myFaction.getHome());
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,7 +1,5 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
import com.bukkit.mcteam.factions.FPlayer;
 | 
					import com.bukkit.mcteam.factions.FPlayer;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Faction;
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
@@ -10,18 +8,11 @@ import com.bukkit.mcteam.factions.struct.Role;
 | 
				
			|||||||
public class FCommandInvite extends FBaseCommand {
 | 
					public class FCommandInvite extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandInvite() {
 | 
						public FCommandInvite() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("invite");
 | 
							aliases.add("invite");
 | 
				
			||||||
		aliases.add("inv");
 | 
							aliases.add("inv");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		requiredParameters.add("player name");
 | 
							requiredParameters.add("player name");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Invite a player";
 | 
							helpDescription = "Invite a player";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,15 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Faction;
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FCommandJoin extends FBaseCommand {
 | 
					public class FCommandJoin extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandJoin() {
 | 
						public FCommandJoin() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("join");
 | 
							aliases.add("join");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		requiredParameters.add("faction name");
 | 
							requiredParameters.add("faction name");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Join a faction";
 | 
							helpDescription = "Join a faction";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
@@ -30,6 +21,11 @@ public class FCommandJoin extends FBaseCommand {
 | 
				
			|||||||
			return;
 | 
								return;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( ! faction.isNormal()) {
 | 
				
			||||||
 | 
								sendMessage("You may only join normal factions. This is a system faction.");
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		if (faction == me.getFaction()) {
 | 
							if (faction == me.getFaction()) {
 | 
				
			||||||
			sendMessage("You are already a member of "+faction.getTag(me));
 | 
								sendMessage("You are already a member of "+faction.getTag(me));
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,5 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
import com.bukkit.mcteam.factions.FPlayer;
 | 
					import com.bukkit.mcteam.factions.FPlayer;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Faction;
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
@@ -9,17 +7,10 @@ import com.bukkit.mcteam.factions.Faction;
 | 
				
			|||||||
public class FCommandKick extends FBaseCommand {
 | 
					public class FCommandKick extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandKick() {
 | 
						public FCommandKick() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("kick");
 | 
							aliases.add("kick");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		requiredParameters.add("player name");
 | 
							requiredParameters.add("player name");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Kick a player from the faction";
 | 
							helpDescription = "Kick a player from the faction";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,23 +1,20 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import org.bukkit.command.CommandSender;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FCommandLeave extends FBaseCommand {
 | 
					public class FCommandLeave extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandLeave() {
 | 
						public FCommandLeave() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("leave");
 | 
							aliases.add("leave");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Leave your faction";
 | 
							helpDescription = "Leave your faction";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public boolean hasPermission(CommandSender sender) {
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	public void perform() {
 | 
						public void perform() {
 | 
				
			||||||
		if ( ! assertHasFaction()) {
 | 
							if ( ! assertHasFaction()) {
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,8 @@ import java.util.ArrayList;
 | 
				
			|||||||
import java.util.Collections;
 | 
					import java.util.Collections;
 | 
				
			||||||
import java.util.Comparator;
 | 
					import java.util.Comparator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.command.CommandSender;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Faction;
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
import com.bukkit.mcteam.factions.util.TextUtil;
 | 
					import com.bukkit.mcteam.factions.util.TextUtil;
 | 
				
			||||||
@@ -11,25 +13,23 @@ import com.bukkit.mcteam.factions.util.TextUtil;
 | 
				
			|||||||
public class FCommandList extends FBaseCommand {
 | 
					public class FCommandList extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandList() {
 | 
						public FCommandList() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("list");
 | 
							aliases.add("list");
 | 
				
			||||||
		aliases.add("ls");
 | 
							aliases.add("ls");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters.add("page");
 | 
							optionalParameters.add("page");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Show a list of the factions";
 | 
							helpDescription = "Show a list of the factions";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// TODO put the 0 faction at the highest position
 | 
						@Override
 | 
				
			||||||
 | 
						public boolean hasPermission(CommandSender sender) {
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public void perform() {
 | 
						public void perform() {
 | 
				
			||||||
		ArrayList<Faction> FactionList = new ArrayList<Faction>(Faction.getAll());
 | 
							ArrayList<Faction> FactionList = new ArrayList<Faction>(Faction.getAll());
 | 
				
			||||||
		FactionList.remove(Faction.get(0));
 | 
							FactionList.remove(Faction.getNone());
 | 
				
			||||||
 | 
							FactionList.remove(Faction.getSafeZone());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		int page = 1;
 | 
							int page = 1;
 | 
				
			||||||
		if (parameters.size() > 0) {
 | 
							if (parameters.size() > 0) {
 | 
				
			||||||
@@ -65,7 +65,7 @@ public class FCommandList extends FBaseCommand {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		FactionList.add(0, Faction.get(0));
 | 
							FactionList.add(0, Faction.getNone());
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		int maxPage = (int)Math.floor((double)FactionList.size() / 9D);
 | 
							int maxPage = (int)Math.floor((double)FactionList.size() / 9D);
 | 
				
			||||||
		if (page < 0 || page > maxPage) {
 | 
							if (page < 0 || page > maxPage) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import org.bukkit.command.CommandSender;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.bukkit.mcteam.factions.Board;
 | 
					import com.bukkit.mcteam.factions.Board;
 | 
				
			||||||
import com.bukkit.mcteam.factions.FLocation;
 | 
					import com.bukkit.mcteam.factions.FLocation;
 | 
				
			||||||
@@ -8,20 +8,18 @@ import com.bukkit.mcteam.factions.FLocation;
 | 
				
			|||||||
public class FCommandMap extends FBaseCommand {
 | 
					public class FCommandMap extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandMap() {
 | 
						public FCommandMap() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("map");
 | 
							aliases.add("map");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters.add("on|off");
 | 
							optionalParameters.add("on|off");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Show territory map, set optional auto update";
 | 
							helpDescription = "Show territory map, set optional auto update";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public boolean hasPermission(CommandSender sender) {
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	public void perform() {
 | 
						public void perform() {
 | 
				
			||||||
		if (parameters.size() > 0) {
 | 
							if (parameters.size() > 0) {
 | 
				
			||||||
			String mapAutoUpdating = parameters.get(0);
 | 
								String mapAutoUpdating = parameters.get(0);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,5 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
import com.bukkit.mcteam.factions.FPlayer;
 | 
					import com.bukkit.mcteam.factions.FPlayer;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Faction;
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
@@ -10,17 +8,10 @@ import com.bukkit.mcteam.factions.struct.Role;
 | 
				
			|||||||
public class FCommandMod extends FBaseCommand {
 | 
					public class FCommandMod extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandMod() {
 | 
						public FCommandMod() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("mod");
 | 
							aliases.add("mod");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		requiredParameters.add("player name");
 | 
							requiredParameters.add("player name");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Give or revoke moderator rights";
 | 
							helpDescription = "Give or revoke moderator rights";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,5 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Faction;
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
import com.bukkit.mcteam.factions.struct.Role;
 | 
					import com.bukkit.mcteam.factions.struct.Role;
 | 
				
			||||||
@@ -9,17 +7,9 @@ import com.bukkit.mcteam.factions.struct.Role;
 | 
				
			|||||||
public class FCommandOpen extends FBaseCommand {
 | 
					public class FCommandOpen extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandOpen() {
 | 
						public FCommandOpen() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("open");
 | 
							aliases.add("open");
 | 
				
			||||||
		aliases.add("close");
 | 
							aliases.add("close");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Switch if invitation is required to join";
 | 
							helpDescription = "Switch if invitation is required to join";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,13 +1,10 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.bukkit.mcteam.factions.struct.Relation;
 | 
					import com.bukkit.mcteam.factions.struct.Relation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FCommandRelationAlly extends FRelationCommand {
 | 
					public class FCommandRelationAlly extends FRelationCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandRelationAlly() {
 | 
						public FCommandRelationAlly() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("ally");
 | 
							aliases.add("ally");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,13 +1,10 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.bukkit.mcteam.factions.struct.Relation;
 | 
					import com.bukkit.mcteam.factions.struct.Relation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FCommandRelationEnemy extends FRelationCommand {
 | 
					public class FCommandRelationEnemy extends FRelationCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandRelationEnemy() {
 | 
						public FCommandRelationEnemy() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("enemy");
 | 
							aliases.add("enemy");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,13 +1,10 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.bukkit.mcteam.factions.struct.Relation;
 | 
					import com.bukkit.mcteam.factions.struct.Relation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FCommandRelationNeutral extends FRelationCommand {
 | 
					public class FCommandRelationNeutral extends FRelationCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandRelationNeutral() {
 | 
						public FCommandRelationNeutral() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("neutral");
 | 
							aliases.add("neutral");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.command.CommandSender;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.Board;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.FLocation;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.Factions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class FCommandSafeclaim extends FBaseCommand {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public FCommandSafeclaim() {
 | 
				
			||||||
 | 
							aliases.add("safeclaim");
 | 
				
			||||||
 | 
							aliases.add("safe");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							helpDescription = "Claim land for the safezone";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public boolean hasPermission(CommandSender sender) {
 | 
				
			||||||
 | 
							return Factions.hasPermManageSafeZone(sender);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public void perform() {
 | 
				
			||||||
 | 
							FLocation flocation = new FLocation(me);
 | 
				
			||||||
 | 
							Board.setFactionAt(Faction.getSafeZone(), flocation);
 | 
				
			||||||
 | 
							sendMessage("This land is now a safe zone");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										38
									
								
								src/com/bukkit/mcteam/factions/commands/FCommandSethome.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/com/bukkit/mcteam/factions/commands/FCommandSethome.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.struct.Role;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class FCommandSethome extends FBaseCommand {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public FCommandSethome() {
 | 
				
			||||||
 | 
							aliases.add("sethome");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							helpDescription = "Set the faction home";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public void perform() {
 | 
				
			||||||
 | 
							if ( ! assertHasFaction()) {
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if ( ! assertMinRole(Role.MODERATOR)) {
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if ( ! Conf.homesEnabled) {
 | 
				
			||||||
 | 
								me.sendMessage("Sorry, Faction homes are disabled on this server.");
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// TODO may only be inside faction territory
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							Faction myFaction = me.getFaction();
 | 
				
			||||||
 | 
							myFaction.setHome(player.getLocation());
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							myFaction.sendMessage(me.getNameAndRelevant(myFaction)+Conf.colorSystem+" set the home for your faction. You can now use:");
 | 
				
			||||||
 | 
							myFaction.sendMessage(new FCommandHome().getUseageTemplate(true, true));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,8 +1,9 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
import java.util.Collection;
 | 
					import java.util.Collection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.command.CommandSender;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
import com.bukkit.mcteam.factions.FPlayer;
 | 
					import com.bukkit.mcteam.factions.FPlayer;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Faction;
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
@@ -13,21 +14,19 @@ import com.bukkit.mcteam.factions.util.TextUtil;
 | 
				
			|||||||
public class FCommandShow extends FBaseCommand {
 | 
					public class FCommandShow extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandShow() {
 | 
						public FCommandShow() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("show");
 | 
							aliases.add("show");
 | 
				
			||||||
		aliases.add("who");
 | 
							aliases.add("who");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters.add("faction tag");
 | 
							optionalParameters.add("faction tag");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Show faction information";
 | 
							helpDescription = "Show faction information";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public boolean hasPermission(CommandSender sender) {
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	public void perform() {
 | 
						public void perform() {
 | 
				
			||||||
		Faction faction;
 | 
							Faction faction;
 | 
				
			||||||
		if (parameters.size() > 0) {
 | 
							if (parameters.size() > 0) {
 | 
				
			||||||
@@ -42,7 +41,7 @@ public class FCommandShow extends FBaseCommand {
 | 
				
			|||||||
		
 | 
							
 | 
				
			||||||
		sendMessage(TextUtil.titleize(faction.getTag(me)));
 | 
							sendMessage(TextUtil.titleize(faction.getTag(me)));
 | 
				
			||||||
		sendMessage(Conf.colorChrome+"Description: "+Conf.colorSystem+faction.getDescription());
 | 
							sendMessage(Conf.colorChrome+"Description: "+Conf.colorSystem+faction.getDescription());
 | 
				
			||||||
		if (faction.getId() == 0) {
 | 
							if ( ! faction.isNormal()) {
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,17 +10,10 @@ import com.bukkit.mcteam.factions.util.TextUtil;
 | 
				
			|||||||
public class FCommandTag extends FBaseCommand {
 | 
					public class FCommandTag extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandTag() {
 | 
						public FCommandTag() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("tag");
 | 
							aliases.add("tag");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		requiredParameters.add("faction tag");
 | 
							requiredParameters.add("faction tag");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Change the faction tag";
 | 
							helpDescription = "Change the faction tag";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,5 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
import com.bukkit.mcteam.factions.FPlayer;
 | 
					import com.bukkit.mcteam.factions.FPlayer;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Faction;
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
@@ -10,18 +8,12 @@ import com.bukkit.mcteam.factions.util.TextUtil;
 | 
				
			|||||||
public class FCommandTitle extends FBaseCommand {
 | 
					public class FCommandTitle extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandTitle() {
 | 
						public FCommandTitle() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("title");
 | 
							aliases.add("title");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		requiredParameters.add("player name");
 | 
							requiredParameters.add("player name");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		optionalParameters.add("title");
 | 
							optionalParameters.add("title");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Set or remove a players title";
 | 
							helpDescription = "Set or remove a players title";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,31 +1,35 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.bukkit.mcteam.factions.Board;
 | 
					import com.bukkit.mcteam.factions.Board;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
import com.bukkit.mcteam.factions.FLocation;
 | 
					import com.bukkit.mcteam.factions.FLocation;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Faction;
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.Factions;
 | 
				
			||||||
import com.bukkit.mcteam.factions.struct.Role;
 | 
					import com.bukkit.mcteam.factions.struct.Role;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FCommandUnclaim extends FBaseCommand {
 | 
					public class FCommandUnclaim extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandUnclaim() {
 | 
						public FCommandUnclaim() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("unclaim");
 | 
							aliases.add("unclaim");
 | 
				
			||||||
		aliases.add("declaim");
 | 
							aliases.add("declaim");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = true;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		helpDescription = "Unclaim the land where you are standing";
 | 
							helpDescription = "Unclaim the land where you are standing";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public void perform() {
 | 
						public void perform() {
 | 
				
			||||||
 | 
							FLocation flocation = new FLocation(me);
 | 
				
			||||||
 | 
							Faction otherFaction = Board.getFactionAt(flocation);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if (otherFaction.isSafeZone()) {
 | 
				
			||||||
 | 
								if (Factions.hasPermManageSafeZone(sender)) {
 | 
				
			||||||
 | 
									Board.removeAt(flocation);
 | 
				
			||||||
 | 
									sendMessage("Safe zone was unclaimed.");
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									sendMessage("This is a safe zone. You lack permissions to unclaim.");
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		if ( ! assertHasFaction()) {
 | 
							if ( ! assertHasFaction()) {
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -35,8 +39,7 @@ public class FCommandUnclaim extends FBaseCommand {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		Faction myFaction = me.getFaction();
 | 
							Faction myFaction = me.getFaction();
 | 
				
			||||||
		FLocation flocation = new FLocation(me);
 | 
							
 | 
				
			||||||
		Faction otherFaction = Board.getFactionAt(flocation);
 | 
					 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if ( myFaction != otherFaction) {
 | 
							if ( myFaction != otherFaction) {
 | 
				
			||||||
			sendMessage("You don't own this land.");
 | 
								sendMessage("You don't own this land.");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,25 +1,25 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import org.bukkit.command.CommandSender;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.bukkit.mcteam.factions.Factions;
 | 
					import com.bukkit.mcteam.factions.Factions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FCommandVersion extends FBaseCommand {
 | 
					public class FCommandVersion extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FCommandVersion() {
 | 
						public FCommandVersion() {
 | 
				
			||||||
		aliases = new ArrayList<String>();
 | 
					 | 
				
			||||||
		aliases.add("version");
 | 
							aliases.add("version");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		senderMustBePlayer = false;
 | 
							senderMustBePlayer = false;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		helpDescription = "Which version are you using?";
 | 
							helpDescription = "Which version are you using?";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public boolean hasPermission(CommandSender sender) {
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	public void perform() {
 | 
						public void perform() {
 | 
				
			||||||
		sendMessage("You are running "+Factions.instance.getDescription().getFullName());
 | 
							sendMessage("You are running "+Factions.instance.getDescription().getFullName());
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,5 @@
 | 
				
			|||||||
package com.bukkit.mcteam.factions.commands;
 | 
					package com.bukkit.mcteam.factions.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import org.bukkit.ChatColor;
 | 
					import org.bukkit.ChatColor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
@@ -13,13 +11,9 @@ import com.bukkit.mcteam.factions.struct.Role;
 | 
				
			|||||||
public class FRelationCommand extends FBaseCommand {
 | 
					public class FRelationCommand extends FBaseCommand {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public FRelationCommand() {
 | 
						public FRelationCommand() {
 | 
				
			||||||
		requiredParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		optionalParameters = new ArrayList<String>();
 | 
					 | 
				
			||||||
		requiredParameters.add("faction tag");
 | 
							requiredParameters.add("faction tag");
 | 
				
			||||||
		helpDescription = "Set relation wish to another faction";
 | 
					 | 
				
			||||||
		permissions = "";
 | 
					 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		senderMustBePlayer = true;
 | 
							helpDescription = "Set relation wish to another faction";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public void relation(Relation whishedRelation, String otherFactionName) {
 | 
						public void relation(Relation whishedRelation, String otherFactionName) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,7 @@ import com.bukkit.mcteam.factions.Conf;
 | 
				
			|||||||
import com.bukkit.mcteam.factions.FLocation;
 | 
					import com.bukkit.mcteam.factions.FLocation;
 | 
				
			||||||
import com.bukkit.mcteam.factions.FPlayer;
 | 
					import com.bukkit.mcteam.factions.FPlayer;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Faction;
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.Factions;
 | 
				
			||||||
import com.bukkit.mcteam.factions.util.TextUtil;
 | 
					import com.bukkit.mcteam.factions.util.TextUtil;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FactionsBlockListener extends BlockListener {
 | 
					public class FactionsBlockListener extends BlockListener {
 | 
				
			||||||
@@ -45,11 +46,20 @@ public class FactionsBlockListener extends BlockListener {
 | 
				
			|||||||
	public boolean playerCanBuildDestroyBlock(Player player, Block block, String action) {
 | 
						public boolean playerCanBuildDestroyBlock(Player player, Block block, String action) {
 | 
				
			||||||
		Faction otherFaction = Board.getFactionAt(new FLocation(block));
 | 
							Faction otherFaction = Board.getFactionAt(new FLocation(block));
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if (otherFaction.getId() == 0) {
 | 
							if (otherFaction.isNone()) {
 | 
				
			||||||
			return true; // This is no faction territory. You may build or break stuff here.
 | 
								return true;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		FPlayer me = FPlayer.get(player);
 | 
							FPlayer me = FPlayer.get(player);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if (otherFaction.isSafeZone()) {
 | 
				
			||||||
 | 
								if (Factions.hasPermManageSafeZone(player)) {
 | 
				
			||||||
 | 
									return true;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								me.sendMessage("You can't "+action+" in a safe zone.");
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		Faction myFaction = me.getFaction();
 | 
							Faction myFaction = me.getFaction();
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		// Cancel if we are not in our own territory
 | 
							// Cancel if we are not in our own territory
 | 
				
			||||||
@@ -92,11 +102,12 @@ public class FactionsBlockListener extends BlockListener {
 | 
				
			|||||||
		Faction myFaction = me.getFaction();
 | 
							Faction myFaction = me.getFaction();
 | 
				
			||||||
		Faction otherFaction = Board.getFactionAt(new FLocation(block));
 | 
							Faction otherFaction = Board.getFactionAt(new FLocation(block));
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if (otherFaction != null && otherFaction.getId() != 0 && myFaction != otherFaction) {
 | 
							if (otherFaction.isNormal() && myFaction != otherFaction) {
 | 
				
			||||||
			me.sendMessage(Conf.colorSystem+"You can't use "+TextUtil.getMaterialName(material)+" in the territory of "+otherFaction.getTag(myFaction));
 | 
								me.sendMessage("You can't use "+TextUtil.getMaterialName(material)+" in the territory of "+otherFaction.getTag(myFaction));
 | 
				
			||||||
			//otherFaction.sendMessage(me.getNameAndRelevant(otherFaction)+Conf.colorSystem+" tried to use "+TextUtil.getMaterialName(material)+" in your territory");
 | 
					 | 
				
			||||||
			return false;
 | 
								return false;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// You may use doors in both safeZone and wilderness
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,18 +7,22 @@ import org.bukkit.entity.Creeper;
 | 
				
			|||||||
import org.bukkit.entity.Entity;
 | 
					import org.bukkit.entity.Entity;
 | 
				
			||||||
import org.bukkit.entity.Fireball;
 | 
					import org.bukkit.entity.Fireball;
 | 
				
			||||||
import org.bukkit.entity.Player;
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
 | 
					import org.bukkit.event.entity.CreatureSpawnEvent;
 | 
				
			||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
 | 
					import org.bukkit.event.entity.EntityDamageByEntityEvent;
 | 
				
			||||||
import org.bukkit.event.entity.EntityDamageByProjectileEvent;
 | 
					import org.bukkit.event.entity.EntityDamageByProjectileEvent;
 | 
				
			||||||
import org.bukkit.event.entity.EntityDamageEvent;
 | 
					import org.bukkit.event.entity.EntityDamageEvent;
 | 
				
			||||||
import org.bukkit.event.entity.EntityDeathEvent;
 | 
					import org.bukkit.event.entity.EntityDeathEvent;
 | 
				
			||||||
import org.bukkit.event.entity.EntityExplodeEvent;
 | 
					import org.bukkit.event.entity.EntityExplodeEvent;
 | 
				
			||||||
import org.bukkit.event.entity.EntityListener;
 | 
					import org.bukkit.event.entity.EntityListener;
 | 
				
			||||||
 | 
					import org.bukkit.event.entity.EntityTargetEvent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.bukkit.mcteam.factions.Board;
 | 
					import com.bukkit.mcteam.factions.Board;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
import com.bukkit.mcteam.factions.FLocation;
 | 
					import com.bukkit.mcteam.factions.FLocation;
 | 
				
			||||||
import com.bukkit.mcteam.factions.FPlayer;
 | 
					import com.bukkit.mcteam.factions.FPlayer;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.factions.Faction;
 | 
				
			||||||
import com.bukkit.mcteam.factions.struct.Relation;
 | 
					import com.bukkit.mcteam.factions.struct.Relation;
 | 
				
			||||||
 | 
					import com.bukkit.mcteam.util.EntityUtil;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FactionsEntityListener extends EntityListener {
 | 
					public class FactionsEntityListener extends EntityListener {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
@@ -30,9 +34,9 @@ public class FactionsEntityListener extends EntityListener {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
		Player player = (Player) entity;
 | 
							Player player = (Player) entity;
 | 
				
			||||||
		FPlayer follower = FPlayer.get(player);
 | 
							FPlayer fplayer = FPlayer.get(player);
 | 
				
			||||||
		follower.onDeath();
 | 
							fplayer.onDeath();
 | 
				
			||||||
		follower.sendMessage("Your power is now "+follower.getPowerRounded()+" / "+follower.getPowerMaxRounded());
 | 
							fplayer.sendMessage("Your power is now "+fplayer.getPowerRounded()+" / "+fplayer.getPowerMaxRounded());
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
@@ -61,7 +65,7 @@ public class FactionsEntityListener extends EntityListener {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// TODO what happens with the creeper or fireball then?
 | 
						// TODO what happens with the creeper or fireball then? Must we delete them manually?
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public void onEntityExplode(EntityExplodeEvent event)
 | 
						public void onEntityExplode(EntityExplodeEvent event)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -69,15 +73,17 @@ public class FactionsEntityListener extends EntityListener {
 | 
				
			|||||||
			return;
 | 
								return;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
							Faction faction = Board.getFactionAt(new FLocation(event.getLocation()));
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		// Explosions may happen in the wilderness
 | 
							// Explosions may happen in the wilderness
 | 
				
			||||||
		if (Board.getIdAt(new FLocation(event.getLocation())) == 0) {
 | 
							if (faction.isNone()) {
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if (Conf.territoryBlockCreepers && event.getEntity() instanceof Creeper) {
 | 
							if ((Conf.territoryBlockCreepers || faction.isSafeZone()) && event.getEntity() instanceof Creeper) {
 | 
				
			||||||
			// creeper which might need prevention, if inside faction territory
 | 
								// creeper which might need prevention, if inside faction territory
 | 
				
			||||||
			event.setCancelled(true);
 | 
								event.setCancelled(true);
 | 
				
			||||||
		} else if (Conf.territoryBlockFireballs && event.getEntity() instanceof Fireball) {
 | 
							} else if ((Conf.territoryBlockFireballs || faction.isSafeZone()) && event.getEntity() instanceof Fireball) {
 | 
				
			||||||
			// ghast fireball which might need prevention, if inside faction territory
 | 
								// ghast fireball which might need prevention, if inside faction territory
 | 
				
			||||||
			event.setCancelled(true);
 | 
								event.setCancelled(true);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -87,22 +93,32 @@ public class FactionsEntityListener extends EntityListener {
 | 
				
			|||||||
		Entity damager = sub.getDamager();
 | 
							Entity damager = sub.getDamager();
 | 
				
			||||||
		Entity damagee = sub.getEntity();
 | 
							Entity damagee = sub.getEntity();
 | 
				
			||||||
		int damage = sub.getDamage();
 | 
							int damage = sub.getDamage();
 | 
				
			||||||
		if ( ! (damager instanceof Player)) {
 | 
					 | 
				
			||||||
			return true;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if ( ! (damagee instanceof Player)) {
 | 
							if ( ! (damagee instanceof Player)) {
 | 
				
			||||||
			return true;
 | 
								return true;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		FPlayer defender = FPlayer.get((Player)damagee);
 | 
							FPlayer defender = FPlayer.get((Player)damagee);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// Players can not take attack damage in a SafeZone
 | 
				
			||||||
 | 
							if (Board.getFactionAt(new FLocation(defender)).isSafeZone()) {
 | 
				
			||||||
 | 
								if (damager instanceof Player) {
 | 
				
			||||||
 | 
									FPlayer attacker = FPlayer.get((Player)damager);
 | 
				
			||||||
 | 
									attacker.sendMessage("You cant hurt other players in a SafeZone.");
 | 
				
			||||||
 | 
									defender.sendMessage(attacker.getNameAndRelevant(defender)+Conf.colorSystem+" tried to hurt you.");
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if ( ! (damager instanceof Player)) {
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		FPlayer attacker = FPlayer.get((Player)damager);
 | 
							FPlayer attacker = FPlayer.get((Player)damager);
 | 
				
			||||||
		Relation relation = defender.getRelation(attacker);
 | 
							Relation relation = defender.getRelation(attacker);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		//Log.debug(attacker.getName() + " attacked " + defender.getName());
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		// Players without faction may be hurt anywhere
 | 
							// Players without faction may be hurt anywhere
 | 
				
			||||||
		if (defender.getFaction().getId() == 0) {
 | 
							if (defender.getFaction().isNone()) {
 | 
				
			||||||
			return true;
 | 
								return true;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@@ -121,14 +137,47 @@ public class FactionsEntityListener extends EntityListener {
 | 
				
			|||||||
		
 | 
							
 | 
				
			||||||
		// Damage will be dealt. However check if the damage should be reduced.
 | 
							// Damage will be dealt. However check if the damage should be reduced.
 | 
				
			||||||
		if (defender.isInOwnTerritory() && Conf.territoryShieldFactor > 0) {
 | 
							if (defender.isInOwnTerritory() && Conf.territoryShieldFactor > 0) {
 | 
				
			||||||
			int newDamage = (int)(damage * Conf.territoryShieldFactor);
 | 
								int newDamage = (int)Math.ceil(damage * (1D - Conf.territoryShieldFactor));
 | 
				
			||||||
			sub.setDamage(newDamage);
 | 
								sub.setDamage(newDamage);
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			// Send message
 | 
								// Send message
 | 
				
			||||||
		    String perc = MessageFormat.format("{0,number,#%}", (1.0 - Conf.territoryShieldFactor));
 | 
							    String perc = MessageFormat.format("{0,number,#%}", (Conf.territoryShieldFactor)); // TODO does this display correctly??
 | 
				
			||||||
		    defender.sendMessage(Conf.colorSystem+"Enemy damage reduced by "+ChatColor.RED+perc+Conf.colorSystem+".");
 | 
							    defender.sendMessage("Enemy damage reduced by "+ChatColor.RED+perc+Conf.colorSystem+".");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public void onCreatureSpawn(CreatureSpawnEvent event) {
 | 
				
			||||||
 | 
							if (event.isCancelled()) {
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if (Conf.safeZoneNerfedCreatureTypes.contains(event.getCreatureType()) && Board.getFactionAt(new FLocation(event.getLocation())).isSafeZone()) {
 | 
				
			||||||
 | 
								event.setCancelled(true);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void onEntityTarget(EntityTargetEvent event) {
 | 
				
			||||||
 | 
							if (event.isCancelled()) {
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// if there is a target
 | 
				
			||||||
 | 
							Entity target = event.getTarget();
 | 
				
			||||||
 | 
							if (target == null) {
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// We are interested in blocking targeting for certain mobs:
 | 
				
			||||||
 | 
							if ( ! Conf.safeZoneNerfedCreatureTypes.contains(EntityUtil.creatureTypeFromEntity(event.getEntity()))) {
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// in case the target is in a safe zone.
 | 
				
			||||||
 | 
							if (Board.getFactionAt(new FLocation(target.getLocation())).isSafeZone()) {
 | 
				
			||||||
 | 
								event.setCancelled(true);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,6 +3,7 @@ package com.bukkit.mcteam.factions.listeners;
 | 
				
			|||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.logging.Logger;
 | 
					import java.util.logging.Logger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.Location;
 | 
				
			||||||
import org.bukkit.Material;
 | 
					import org.bukkit.Material;
 | 
				
			||||||
import org.bukkit.block.Block;
 | 
					import org.bukkit.block.Block;
 | 
				
			||||||
import org.bukkit.command.CommandSender;
 | 
					import org.bukkit.command.CommandSender;
 | 
				
			||||||
@@ -12,6 +13,7 @@ import org.bukkit.event.player.PlayerEvent;
 | 
				
			|||||||
import org.bukkit.event.player.PlayerItemEvent;
 | 
					import org.bukkit.event.player.PlayerItemEvent;
 | 
				
			||||||
import org.bukkit.event.player.PlayerListener;
 | 
					import org.bukkit.event.player.PlayerListener;
 | 
				
			||||||
import org.bukkit.event.player.PlayerMoveEvent;
 | 
					import org.bukkit.event.player.PlayerMoveEvent;
 | 
				
			||||||
 | 
					import org.bukkit.event.player.PlayerRespawnEvent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.bukkit.mcteam.factions.Board;
 | 
					import com.bukkit.mcteam.factions.Board;
 | 
				
			||||||
import com.bukkit.mcteam.factions.Conf;
 | 
					import com.bukkit.mcteam.factions.Conf;
 | 
				
			||||||
@@ -99,13 +101,6 @@ public class FactionsPlayerListener extends PlayerListener{
 | 
				
			|||||||
		FPlayer.autoLeaveOnInactivityRoutine();
 | 
							FPlayer.autoLeaveOnInactivityRoutine();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	@Override
 | 
					 | 
				
			||||||
	public void onPlayerQuit(PlayerEvent event) {
 | 
					 | 
				
			||||||
		// Save all players on player quit.
 | 
					 | 
				
			||||||
		FPlayer.save();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public void onPlayerMove(PlayerMoveEvent event) {
 | 
						public void onPlayerMove(PlayerMoveEvent event) {
 | 
				
			||||||
		FPlayer me = FPlayer.get(event.getPlayer());
 | 
							FPlayer me = FPlayer.get(event.getPlayer());
 | 
				
			||||||
@@ -159,7 +154,7 @@ public class FactionsPlayerListener extends PlayerListener{
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		Faction otherFaction = Board.getFactionAt(new FLocation(block));
 | 
							Faction otherFaction = Board.getFactionAt(new FLocation(block));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (otherFaction.getId() == 0) {
 | 
							if (otherFaction.isNone()) {
 | 
				
			||||||
			return true; // This is not faction territory. Use whatever you like here.
 | 
								return true; // This is not faction territory. Use whatever you like here.
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -174,4 +169,13 @@ public class FactionsPlayerListener extends PlayerListener{
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void onPlayerRespawn(PlayerRespawnEvent event) {
 | 
				
			||||||
 | 
							FPlayer me = FPlayer.get(event.getPlayer());
 | 
				
			||||||
 | 
							Location home = me.getFaction().getHome();
 | 
				
			||||||
 | 
							if (Conf.homesEnabled && Conf.homesTeleportToOnDeath && home != null) {
 | 
				
			||||||
 | 
								event.setRespawnLocation(home);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										18
									
								
								src/com/bukkit/mcteam/util/EntityUtil.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/com/bukkit/mcteam/util/EntityUtil.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					package com.bukkit.mcteam.util;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.entity.Creature;
 | 
				
			||||||
 | 
					import org.bukkit.entity.CreatureType;
 | 
				
			||||||
 | 
					import org.bukkit.entity.Entity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class EntityUtil {
 | 
				
			||||||
 | 
						public static CreatureType creatureTypeFromEntity(Entity entity) {
 | 
				
			||||||
 | 
							if ( ! (entity instanceof Creature)) {
 | 
				
			||||||
 | 
								return null;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							String name = entity.getClass().getSimpleName();
 | 
				
			||||||
 | 
							name = name.substring(5); // Remove "Craft"
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return CreatureType.fromName(name);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user