cannon crater changes

This commit is contained in:
NewGarbo 2016-01-25 08:40:59 +00:00
parent c43c09fd3c
commit 54fa1449f6
3 changed files with 24 additions and 14 deletions

View File

@ -80,7 +80,7 @@ public class CannonCrater implements Listener
private void createExplosion() private void createExplosion()
{ {
_blocks.add(new CraterBlock(_origin, Material.AIR)); _blocks.add(new CraterBlock(_origin, 0, Material.AIR));
HashMap<Block, Double> blockList = new HashMap<Block, Double>(); HashMap<Block, Double> blockList = new HashMap<Block, Double>();
int iR = (int) EXPL_RADIUS + 1; int iR = (int) EXPL_RADIUS + 1;
@ -114,13 +114,13 @@ public class CannonCrater implements Listener
if (air) if (air)
{ {
_blocks.add(new CraterBlock(block.getLocation(), Material.AIR)); _blocks.add(new CraterBlock(block.getLocation(), distance, Material.AIR));
Block above = block.getRelative(BlockFace.UP); Block above = block;
while (!UtilItem.isBoundless((above = above.getRelative(BlockFace.UP)).getType())) while (!UtilItem.isBoundless((above = above.getRelative(BlockFace.UP)).getType()))
{ {
_blocks.add(new CraterBlock(above.getLocation(), Material.AIR)); _blocks.add(new CraterBlock(above.getLocation(), distance, Material.AIR));
} }
if (!UtilItem.isBoundless(block.getRelative(BlockFace.DOWN).getType()) && distance >= 1.5 && UtilMath.random.nextBoolean()) if (!UtilItem.isBoundless(block.getRelative(BlockFace.DOWN).getType()) && distance >= 1.5 && UtilMath.random.nextBoolean())
@ -128,14 +128,21 @@ public class CannonCrater implements Listener
_effects.add(new CraterEffect(ParticleType.FLAME, block.getLocation().add(0, .5, 0))); _effects.add(new CraterEffect(ParticleType.FLAME, block.getLocation().add(0, .5, 0)));
} }
} }
else if (distance > 2 && Math.random() > .75 && UtilItem.isBoundless(block.getRelative(BlockFace.UP).getType()) && !UtilItem.isBoundless(block.getRelative(BlockFace.DOWN).getType())) }
_blocks.forEach(CraterBlock::set);
for (Entry<Block, Double> entry : blockList.entrySet())
{
Block block = entry.getKey();
double distance = entry.getValue();
if (block.getType() == Material.AIR) continue;
if (distance > 2 && Math.random() > .65 && UtilItem.isBoundless(block.getRelative(BlockFace.UP).getType()) && !UtilItem.isBoundless(block.getRelative(BlockFace.DOWN).getType()))
{ {
_blocks.add(new CraterBlock(block.getLocation(), Material.COAL_BLOCK)); _blocks.add(new CraterBlock(block.getLocation(), distance, Material.COAL_BLOCK));
_effects.add(new CraterEffect(ParticleType.FLAME, block.getLocation().add(0, .5, 0)));
if (UtilMath.random.nextBoolean())
{
_effects.add(new CraterEffect(ParticleType.FLAME, block.getLocation().add(0, .5, 0)));
}
} }
} }

View File

@ -7,19 +7,21 @@ public class CraterBlock
{ {
public Material Type; public Material Type;
public byte Data; public byte Data;
public double DistanceToOrigin;
public Location Location; public Location Location;
public CraterBlock(Location location, Material type, byte data) public CraterBlock(Location location, double dist, Material type, byte data)
{ {
Location = location; Location = location;
DistanceToOrigin = dist;
Type = type; Type = type;
Data = data; Data = data;
} }
public CraterBlock(Location location, Material type) public CraterBlock(Location location, double dist, Material type)
{ {
this(location, type, (byte) 0); this(location, dist, type, (byte) 0);
} }
public void set() public void set()

View File

@ -25,6 +25,7 @@ public class CraterEffect
public void update() public void update()
{ {
UtilParticle.PlayParticle(_particle, _location, new Vector(0, 0, 0), .1f, 1, ViewDist.MAX); UtilParticle.PlayParticle(_particle, _location, new Vector(0, 0, 0), .1f, 1, ViewDist.MAX);
System.out.println(_particle);
} }
public long getLifetime() public long getLifetime()