91 lines
2.3 KiB
Java
91 lines
2.3 KiB
Java
|
package mineplex.core.treasure.animation.animations;
|
||
|
|
||
|
import org.bukkit.Location;
|
||
|
import org.bukkit.Material;
|
||
|
import org.bukkit.Sound;
|
||
|
import org.bukkit.entity.Bat;
|
||
|
|
||
|
import mineplex.core.common.util.MapUtil;
|
||
|
import mineplex.core.common.util.UtilAlg;
|
||
|
import mineplex.core.common.util.UtilParticle;
|
||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||
|
import mineplex.core.treasure.TreasureLocation;
|
||
|
import mineplex.core.treasure.animation.TreasureOpenAnimation;
|
||
|
import mineplex.core.treasure.types.Treasure;
|
||
|
import mineplex.core.treasure.util.TreasureUtil;
|
||
|
|
||
|
public class TrickOrTreatChestAnimation extends TreasureOpenAnimation
|
||
|
{
|
||
|
|
||
|
private boolean _tick;
|
||
|
|
||
|
public TrickOrTreatChestAnimation(Treasure treasure, TreasureLocation treasureLocation)
|
||
|
{
|
||
|
super(treasure, treasureLocation);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected void onStart()
|
||
|
{
|
||
|
changeFloor(Material.WOOL, 15, Material.WOOL, 1);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void onTick()
|
||
|
{
|
||
|
if (getTicks() % 10 == 0)
|
||
|
{
|
||
|
for (Location location : getTreasureLocation().getChestLocations())
|
||
|
{
|
||
|
if (Math.random() > 0.7)
|
||
|
{
|
||
|
location.getWorld().playSound(location, Sound.ORB_PICKUP, 1, 0.5F);
|
||
|
}
|
||
|
|
||
|
MapUtil.QuickChangeBlockAt(
|
||
|
location,
|
||
|
_tick ? Material.PUMPKIN : Material.JACK_O_LANTERN,
|
||
|
TreasureUtil.getPumpkinFacing(UtilAlg.GetYaw(UtilAlg.getTrajectory(location, getTreasureLocation().getChest())))
|
||
|
);
|
||
|
}
|
||
|
|
||
|
_tick = !_tick;
|
||
|
}
|
||
|
|
||
|
if (getTicks() % 3 == 0)
|
||
|
{
|
||
|
for (Location location : getTreasureLocation().getChestLocations())
|
||
|
{
|
||
|
UtilParticle.PlayParticleToAll(ParticleType.FLAME, location.clone().add(0, 1, 0), 0.2F, 0.2F, 0.2F, 0.05F, 2, ViewDist.NORMAL);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (getTicks() > 50)
|
||
|
{
|
||
|
setRunning(false);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected void onFinish()
|
||
|
{
|
||
|
for (Location location : getTreasureLocation().getChestLocations())
|
||
|
{
|
||
|
location = location.clone();
|
||
|
location.setYaw(UtilAlg.GetYaw(UtilAlg.getTrajectory(location, getTreasureLocation().getChest())));
|
||
|
createChestAt(location, Material.ENDER_CHEST);
|
||
|
|
||
|
location.add(0, 1, 0);
|
||
|
|
||
|
for (int i = 0; i < 3; i++)
|
||
|
{
|
||
|
Bat bat = spawnEntity(location, Bat.class, true);
|
||
|
bat.setAwake(true);
|
||
|
}
|
||
|
|
||
|
UtilParticle.PlayParticleToAll(ParticleType.LARGE_EXPLODE, location, 0, 0, 0, 0.1F, 1, ViewDist.NORMAL);
|
||
|
}
|
||
|
}
|
||
|
}
|