Added PreventBlockBreak event.
Supports the new SpleefArena flag in GriefPrevention flags. Fired when a player is prevented from breaking a block. If cancelled by another plugin, the break will be allowed.
This commit is contained in:
parent
98d610d668
commit
86a18e2f04
|
|
@ -89,7 +89,7 @@ public class BlockEventHandler implements Listener
|
||||||
Block block = breakEvent.getBlock();
|
Block block = breakEvent.getBlock();
|
||||||
|
|
||||||
//make sure the player is allowed to break at the location
|
//make sure the player is allowed to break at the location
|
||||||
String noBuildReason = GriefPrevention.instance.allowBreak(player, block, block.getLocation());
|
String noBuildReason = GriefPrevention.instance.allowBreak(player, block, block.getLocation(), breakEvent);
|
||||||
if(noBuildReason != null)
|
if(noBuildReason != null)
|
||||||
{
|
{
|
||||||
GriefPrevention.sendMessage(player, TextMode.Err, noBuildReason);
|
GriefPrevention.sendMessage(player, TextMode.Err, noBuildReason);
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import me.ryanhamshire.GriefPrevention.DataStore.NoTransferException;
|
import me.ryanhamshire.GriefPrevention.DataStore.NoTransferException;
|
||||||
|
import me.ryanhamshire.GriefPrevention.events.PreventBlockBreakEvent;
|
||||||
import me.ryanhamshire.GriefPrevention.events.SaveTrappedPlayerEvent;
|
import me.ryanhamshire.GriefPrevention.events.SaveTrappedPlayerEvent;
|
||||||
import net.milkbowl.vault.economy.Economy;
|
import net.milkbowl.vault.economy.Economy;
|
||||||
|
|
||||||
|
|
@ -55,6 +56,7 @@ import org.bukkit.command.*;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
import org.bukkit.inventory.EquipmentSlot;
|
import org.bukkit.inventory.EquipmentSlot;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.PlayerInventory;
|
import org.bukkit.inventory.PlayerInventory;
|
||||||
|
|
@ -3319,6 +3321,11 @@ public class GriefPrevention extends JavaPlugin
|
||||||
}
|
}
|
||||||
|
|
||||||
public String allowBreak(Player player, Block block, Location location)
|
public String allowBreak(Player player, Block block, Location location)
|
||||||
|
{
|
||||||
|
return this.allowBreak(player, block, location, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String allowBreak(Player player, Block block, Location location, BlockBreakEvent breakEvent)
|
||||||
{
|
{
|
||||||
if(!GriefPrevention.instance.claimsEnabledForWorld(location.getWorld())) return null;
|
if(!GriefPrevention.instance.claimsEnabledForWorld(location.getWorld())) return null;
|
||||||
|
|
||||||
|
|
@ -3353,7 +3360,18 @@ public class GriefPrevention extends JavaPlugin
|
||||||
playerData.lastClaim = claim;
|
playerData.lastClaim = claim;
|
||||||
|
|
||||||
//if not in the wilderness, then apply claim rules (permissions, etc)
|
//if not in the wilderness, then apply claim rules (permissions, etc)
|
||||||
return claim.allowBreak(player, block.getType());
|
String cancel = claim.allowBreak(player, block.getType());
|
||||||
|
if(cancel != null && breakEvent != null)
|
||||||
|
{
|
||||||
|
PreventBlockBreakEvent preventionEvent = new PreventBlockBreakEvent(breakEvent);
|
||||||
|
Bukkit.getPluginManager().callEvent(preventionEvent);
|
||||||
|
if(preventionEvent.isCancelled())
|
||||||
|
{
|
||||||
|
cancel = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return cancel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
package me.ryanhamshire.GriefPrevention.events;
|
||||||
|
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
|
|
||||||
|
//if cancelled, GriefPrevention will allow a block to be broken which it would not have otherwise
|
||||||
|
public class PreventBlockBreakEvent extends Event implements Cancellable
|
||||||
|
{
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
private boolean cancelled = false;
|
||||||
|
private BlockBreakEvent innerEvent;
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList()
|
||||||
|
{
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PreventBlockBreakEvent(BlockBreakEvent innerEvent)
|
||||||
|
{
|
||||||
|
this.innerEvent = innerEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlockBreakEvent getInnerEvent()
|
||||||
|
{
|
||||||
|
return this.innerEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers()
|
||||||
|
{
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled()
|
||||||
|
{
|
||||||
|
return this.cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancelled)
|
||||||
|
{
|
||||||
|
this.cancelled = cancelled;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user