/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package explosionphysics;
import java.util.ArrayList;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.entity.FallingBlock;
import org.bukkit.event.Event;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.util.Vector;
/**
*
* @author Taylor
*/
public class ExplosionPhysics extends JavaPlugin implements Listener{
public ArrayList<Material> disallowedBlocks = new ArrayList<Material>();
@Override
public void onEnable(){
getServer().getPluginManager().registerEvents(new ExplosionPhysics(), this);
disallowedBlocks.clear();
disallowedBlocks.add(Material.TNT);
disallowedBlocks.add(Material.PISTON_BASE);
disallowedBlocks.add(Material.PISTON_EXTENSION);
disallowedBlocks.add(Material.PISTON_MOVING_PIECE);
disallowedBlocks.add(Material.PISTON_STICKY_BASE);
}
@EventHandler(priority = EventPriority.NORMAL)
public void onBlockExplode(org.bukkit.event.entity.EntityExplodeEvent e){
if (e.isCancelled()){return;}
if (e.blockList().isEmpty()){return;}
e.setYield(0F);
double x = 0;
double y = 0;
double z = 0;
Location eLoc = e.getLocation();
World w = eLoc.getWorld();
for (int i = 0; i < e.blockList().size();i++){
Block b = e.blockList().get(i);
Location bLoc =b.getLocation();
if (disallowedBlocks.contains(b.getType())){continue;}
x = bLoc.getX() - eLoc.getX();
y = bLoc.getY() - eLoc.getY() + .5;
z = bLoc.getZ() - eLoc.getZ();
FallingBlock fb = w.spawnFallingBlock(bLoc, b.getType(), (byte)b.getData());
fb.setDropItem(false);
fb.setVelocity(new Vector(x,y,z));
}
}
}