/**
* @version 1.1
* @author tristan Roche (Stan_fear)
*
* for MoreMaterials 1.8 and later
*/
import java.util.Map;
import net.morematerials.MoreMaterials;
import net.morematerials.handlers.GenericHandler;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.event.Event;
import org.bukkit.event.block.BlockBurnEvent;
import org.bukkit.event.block.BlockIgniteEvent;
import org.bukkit.event.block.BlockRedstoneEvent;
import org.bukkit.event.player.PlayerInteractEvent;
public class ExplosionBlockHandler extends GenericHandler {
@Override
public void init(MoreMaterials plugin) {
}
@Override
public void onActivation(Event event, Map<String, Object> config)
{
World world = null;
Location loc = null;
// checking all possible way to make the block explode
// (so we can get the location of the block)
if(event instanceof PlayerInteractEvent)
{
if (((PlayerInteractEvent) event).hasBlock()) // if the event involve a block
{
world = ((PlayerInteractEvent) event).getClickedBlock().getWorld();
loc = ((PlayerInteractEvent) event).getClickedBlock().getLocation();
}
else // we use the player position (this might be a gunpowder like item that explode when right clicked)
{
world = ((PlayerInteractEvent) event).getPlayer().getWorld();
loc = ((PlayerInteractEvent) event).getPlayer().getLocation();
}
}
else if(event instanceof BlockBurnEvent)
{
world = ((BlockBurnEvent) event).getBlock().getWorld();
loc = ((BlockBurnEvent) event).getBlock().getLocation();
}
else if(event instanceof BlockRedstoneEvent)
{
world = ((BlockRedstoneEvent) event).getBlock().getWorld();
loc = ((BlockRedstoneEvent) event).getBlock().getLocation();
}
else if(event instanceof BlockIgniteEvent)
{
world = ((BlockIgniteEvent) event).getBlock().getWorld();
loc = ((BlockIgniteEvent) event).getBlock().getLocation();
}
else return; // if this is not one of these events, the block is not supposed to explode
//creating the explosion
world.createExplosion(loc, (float) config.get("power"), (boolean) config.get("setOnFire"));
}
public void shutdown() {
}
}