Updates in preparation for 1.1.7 release:
* /f map has been updated to fit inside the new Bukkit line-width limits (39 tiles wide instead of 49) * Players who aren't currently in a faction should no longer get "Person left your faction" messages when others join a faction * Attempt at simple workaround for error related to NPCs from Citizens plugin * Placement and removal of paintings is now prevented if you're in another faction's territory
This commit is contained in:
		@@ -64,7 +64,7 @@ public class Conf {
 | 
				
			|||||||
	public static transient Set<CreatureType> safeZoneNerfedCreatureTypes = new HashSet<CreatureType>();
 | 
						public static transient Set<CreatureType> safeZoneNerfedCreatureTypes = new HashSet<CreatureType>();
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public static transient int mapHeight = 8;
 | 
						public static transient int mapHeight = 8;
 | 
				
			||||||
	public static transient int mapWidth = 49;
 | 
						public static transient int mapWidth = 39;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	static {
 | 
						static {
 | 
				
			||||||
		territoryProtectedMaterials.add(Material.WOODEN_DOOR);
 | 
							territoryProtectedMaterials.add(Material.WOODEN_DOOR);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -371,10 +371,13 @@ public class FPlayer {
 | 
				
			|||||||
			return;
 | 
								return;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		myFaction.sendMessage(this.getNameAndRelevant(myFaction) + Conf.colorSystem + " left your faction.");
 | 
							if (myFaction.isNormal()) {
 | 
				
			||||||
 | 
								myFaction.sendMessage(this.getNameAndRelevant(myFaction) + Conf.colorSystem + " left your faction.");
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		this.resetFactionData();
 | 
							this.resetFactionData();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (myFaction.getFPlayers().size() == 0) {
 | 
							if (myFaction.isNormal() && myFaction.getFPlayers().size() == 0) {
 | 
				
			||||||
			// Remove this faction
 | 
								// Remove this faction
 | 
				
			||||||
			for (FPlayer fplayer : FPlayer.getAllOnline()) {
 | 
								for (FPlayer fplayer : FPlayer.getAllOnline()) {
 | 
				
			||||||
				fplayer.sendMessage("The faction "+myFaction.getTag(fplayer)+Conf.colorSystem+" was disbanded.");
 | 
									fplayer.sendMessage("The faction "+myFaction.getTag(fplayer)+Conf.colorSystem+" was disbanded.");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -151,6 +151,8 @@ public class Factions extends JavaPlugin {
 | 
				
			|||||||
		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.CREATURE_SPAWN, this.entityListener, Event.Priority.Normal, this);
 | 
				
			||||||
		pm.registerEvent(Event.Type.ENTITY_TARGET, this.entityListener, Event.Priority.Normal, this);
 | 
							pm.registerEvent(Event.Type.ENTITY_TARGET, this.entityListener, Event.Priority.Normal, this);
 | 
				
			||||||
 | 
							pm.registerEvent(Event.Type.PAINTING_BREAK, this.entityListener, Event.Priority.Normal, this);
 | 
				
			||||||
 | 
							pm.registerEvent(Event.Type.PAINTING_PLACE, this.entityListener, Event.Priority.Normal, this);
 | 
				
			||||||
		pm.registerEvent(Event.Type.BLOCK_BREAK, this.blockListener, Event.Priority.Normal, this);
 | 
							pm.registerEvent(Event.Type.BLOCK_BREAK, this.blockListener, Event.Priority.Normal, this);
 | 
				
			||||||
		pm.registerEvent(Event.Type.BLOCK_DAMAGE, this.blockListener, Event.Priority.Normal, this);
 | 
							pm.registerEvent(Event.Type.BLOCK_DAMAGE, this.blockListener, Event.Priority.Normal, this);
 | 
				
			||||||
		pm.registerEvent(Event.Type.BLOCK_PLACE, this.blockListener, Event.Priority.Normal, this);
 | 
							pm.registerEvent(Event.Type.BLOCK_PLACE, this.blockListener, Event.Priority.Normal, this);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,8 +15,12 @@ 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 org.bukkit.event.entity.EntityTargetEvent;
 | 
				
			||||||
 | 
					import org.bukkit.event.painting.PaintingBreakByEntityEvent;
 | 
				
			||||||
 | 
					import org.bukkit.event.painting.PaintingBreakEvent;
 | 
				
			||||||
 | 
					import org.bukkit.event.painting.PaintingPlaceEvent;
 | 
				
			||||||
import org.mcteam.factions.Board;
 | 
					import org.mcteam.factions.Board;
 | 
				
			||||||
import org.mcteam.factions.Conf;
 | 
					import org.mcteam.factions.Conf;
 | 
				
			||||||
 | 
					import org.mcteam.factions.Factions;
 | 
				
			||||||
import org.mcteam.factions.FLocation;
 | 
					import org.mcteam.factions.FLocation;
 | 
				
			||||||
import org.mcteam.factions.FPlayer;
 | 
					import org.mcteam.factions.FPlayer;
 | 
				
			||||||
import org.mcteam.factions.Faction;
 | 
					import org.mcteam.factions.Faction;
 | 
				
			||||||
@@ -96,7 +100,7 @@ public class FactionsEntityListener extends EntityListener {
 | 
				
			|||||||
		Entity damagee = sub.getEntity();
 | 
							Entity damagee = sub.getEntity();
 | 
				
			||||||
		int damage = sub.getDamage();
 | 
							int damage = sub.getDamage();
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if ( ! (damagee instanceof Player)) {
 | 
							if ( ! (damagee instanceof Player) || damagee.getLocation() == null) {
 | 
				
			||||||
			return true;
 | 
								return true;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@@ -182,4 +186,71 @@ public class FactionsEntityListener extends EntityListener {
 | 
				
			|||||||
			event.setCancelled(true);
 | 
								event.setCancelled(true);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void onPaintingBreak(PaintingBreakEvent event)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if (event.isCancelled()) {
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if (! (event instanceof PaintingBreakByEntityEvent)) {
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Entity breaker = ((PaintingBreakByEntityEvent)event).getRemover();
 | 
				
			||||||
 | 
							if (! (breaker instanceof Player)) {
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FLocation loc = new FLocation(event.getPainting().getLocation());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( ! this.playerCanDoPaintings((Player)breaker, loc, "remove")) {
 | 
				
			||||||
 | 
								event.setCancelled(true);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void onPaintingPlace(PaintingPlaceEvent event)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if (event.isCancelled()) {
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( ! this.playerCanDoPaintings(event.getPlayer(), new FLocation(event.getBlock()), "place")) {
 | 
				
			||||||
 | 
								event.setCancelled(true);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public boolean playerCanDoPaintings(Player player, FLocation loc, String action) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (Conf.adminBypassPlayers.contains(player.getName())) {
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Faction otherFaction = Board.getFactionAt(loc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (otherFaction.isNone()) {
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FPlayer me = FPlayer.get(player);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (otherFaction.isSafeZone()) {
 | 
				
			||||||
 | 
								if (Factions.hasPermManageSafeZone(player) || !Conf.safeZoneDenyBuild) {
 | 
				
			||||||
 | 
									return true;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								me.sendMessage("You can't "+action+" paintings in a safe zone.");
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Faction myFaction = me.getFaction();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Cancel if we are not in our own territory
 | 
				
			||||||
 | 
							if (myFaction != otherFaction) {
 | 
				
			||||||
 | 
								me.sendMessage("You can't "+action+" paintings in the territory of "+otherFaction.getTag(myFaction));
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user