Workaround for 2x player interact event bug.

Spigot bug:
http://www.spigotmc.org/threads/one-right-click-player-interaction-fires-two-player-interact-events.37600/#post-431325
This commit is contained in:
ryanhamshire 2014-12-03 17:26:08 -08:00
parent 5cc05bcc74
commit 5a9732981f

View File

@ -1059,6 +1059,8 @@ class PlayerEventHandler implements Listener
Player player = event.getPlayer(); Player player = event.getPlayer();
Block clickedBlock = event.getClickedBlock(); //null returned here means interacting with air Block clickedBlock = event.getClickedBlock(); //null returned here means interacting with air
GriefPrevention.AddLogEntry(action.name());
Material clickedBlockType = null; Material clickedBlockType = null;
if(clickedBlock != null) if(clickedBlock != null)
{ {
@ -1896,8 +1898,12 @@ class PlayerEventHandler implements Listener
int newClaimHeight = Math.abs(playerData.lastShovelLocation.getBlockZ() - clickedBlock.getZ()) + 1; int newClaimHeight = Math.abs(playerData.lastShovelLocation.getBlockZ() - clickedBlock.getZ()) + 1;
if(playerData.shovelMode != ShovelMode.Admin && (newClaimWidth < GriefPrevention.instance.config_claims_minSize || newClaimHeight < GriefPrevention.instance.config_claims_minSize)) if(playerData.shovelMode != ShovelMode.Admin && (newClaimWidth < GriefPrevention.instance.config_claims_minSize || newClaimHeight < GriefPrevention.instance.config_claims_minSize))
{
//this IF block is a workaround for craftbukkit bug which fires two events for one interaction
if(newClaimWidth != 1 && newClaimHeight != 1)
{ {
GriefPrevention.sendMessage(player, TextMode.Err, Messages.NewClaimTooSmall, String.valueOf(GriefPrevention.instance.config_claims_minSize)); GriefPrevention.sendMessage(player, TextMode.Err, Messages.NewClaimTooSmall, String.valueOf(GriefPrevention.instance.config_claims_minSize));
}
return; return;
} }