Workaround fix for half-step placement on existing half-steps not being prevented; it's caused by a CraftBukkit bug:
https://bukkit.atlassian.net/browse/BUKKIT-646 Fix for a potential NPE in FPlayer autoLeaveOnInactivityRoutine. Added CaptureThePoints and CombatTag to our softdepend list so they can potentially cancel Factions commands.
This commit is contained in:
		@@ -2,7 +2,7 @@ name: Factions
 | 
			
		||||
version: 1.7_dev
 | 
			
		||||
main: com.massivecraft.factions.P
 | 
			
		||||
authors: [Olof Larsson, Brett Flannigan]
 | 
			
		||||
softdepend: [PermissionsEx, Permissions, Essentials, EssentialsChat, HeroChat, iChat, LocalAreaChat, LWC, nChat, ChatManager, CAPI, AuthMe, Vault, Spout, WorldEdit, WorldGuard]
 | 
			
		||||
softdepend: [PermissionsEx, Permissions, Essentials, EssentialsChat, HeroChat, iChat, LocalAreaChat, LWC, nChat, ChatManager, CAPI, AuthMe, Vault, Spout, WorldEdit, WorldGuard, CaptureThePoints, CombatTag]
 | 
			
		||||
commands:
 | 
			
		||||
  factions:
 | 
			
		||||
    description: Reference command for Factions.
 | 
			
		||||
 
 | 
			
		||||
@@ -67,7 +67,11 @@ public class FPlayers extends PlayerEntityCollection<FPlayer>
 | 
			
		||||
 | 
			
		||||
				// if player is faction leader, sort out the faction since he's going away
 | 
			
		||||
				if (fplayer.getRole() == Rel.LEADER)
 | 
			
		||||
					fplayer.getFaction().promoteNewLeader();
 | 
			
		||||
				{
 | 
			
		||||
					Faction faction = fplayer.getFaction();
 | 
			
		||||
					if (faction != null)
 | 
			
		||||
						fplayer.getFaction().promoteNewLeader();
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				fplayer.leave(false);
 | 
			
		||||
				fplayer.detach();
 | 
			
		||||
 
 | 
			
		||||
@@ -8,12 +8,12 @@ import org.bukkit.ChatColor;
 | 
			
		||||
import org.bukkit.Location;
 | 
			
		||||
import org.bukkit.Material;
 | 
			
		||||
import org.bukkit.block.Block;
 | 
			
		||||
import org.bukkit.block.BlockFace;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
import org.bukkit.event.block.Action;
 | 
			
		||||
import org.bukkit.event.player.PlayerBucketEmptyEvent;
 | 
			
		||||
import org.bukkit.event.player.PlayerBucketFillEvent;
 | 
			
		||||
import org.bukkit.event.player.PlayerChatEvent;
 | 
			
		||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
 | 
			
		||||
import org.bukkit.event.player.PlayerInteractEvent;
 | 
			
		||||
import org.bukkit.event.player.PlayerJoinEvent;
 | 
			
		||||
import org.bukkit.event.player.PlayerKickEvent;
 | 
			
		||||
@@ -229,6 +229,25 @@ public class FactionsPlayerListener extends PlayerListener
 | 
			
		||||
			return;  // only interested on right-clicks for below
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// workaround fix for new CraftBukkit 1.1-R1 bug where half-step on half-step placement doesn't trigger BlockPlaceEvent
 | 
			
		||||
		if (
 | 
			
		||||
				event.hasItem()
 | 
			
		||||
				&&
 | 
			
		||||
				event.getItem().getType() == Material.STEP
 | 
			
		||||
				&&
 | 
			
		||||
				block.getType() == Material.STEP
 | 
			
		||||
				&&
 | 
			
		||||
				event.getBlockFace() == BlockFace.UP
 | 
			
		||||
				&&
 | 
			
		||||
				event.getItem().getData().getData() == block.getData()
 | 
			
		||||
				&&
 | 
			
		||||
				! FactionsBlockListener.playerCanBuildDestroyBlock(player, block, "build", false)
 | 
			
		||||
			)
 | 
			
		||||
		{
 | 
			
		||||
			event.setCancelled(true);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if ( ! playerCanUseItemHere(player, block.getLocation(), event.getMaterial(), false))
 | 
			
		||||
		{
 | 
			
		||||
			event.setCancelled(true);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user