Mineplex/GOD DAMN COSMETICS/gadget/gadgets/item/ItemMaryPoppins.java

148 lines
3.9 KiB
Java
Raw Normal View History

package mineplex.core.gadget.gadgets.item;
import java.awt.*;
import java.time.Month;
import java.time.YearMonth;
import java.util.concurrent.TimeUnit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Chicken;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.util.Vector;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.common.util.particles.ColoredParticle;
import mineplex.core.common.util.particles.DustSpellColor;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.types.ItemGadget;
import mineplex.core.gadget.util.CostConstants;
public class ItemMaryPoppins extends ItemGadget
{
private static final DustSpellColor TOP = new DustSpellColor(Color.BLACK), BOTTOM = new DustSpellColor(new Color(90, 50, 31));
public ItemMaryPoppins(GadgetManager manager)
{
super(manager, "Nanny's Umbrella", new String[]
{
C.cGray + "It's Supercarlshardilicouscakewarsaloucous",
C.cGray + "even though the sound",
C.cGray + "of it is something quite",
C.cGray + "atrocious."
}, CostConstants.POWERPLAY_BONUS, Material.STICK, (byte) 0, TimeUnit.SECONDS.toMillis(20), null);
Free = false;
setPPCYearMonth(YearMonth.of(2018, Month.APRIL));
}
@Override
public void ActivateCustom(Player player)
{
Location location = player.getLocation().add(0, 0.5, 0);
UtilAction.velocity(player, new Vector(0, 3, 0));
UtilParticle.PlayParticleToAll(ParticleType.CLOUD, location, 0.5F, 0, 0.5F, 0, 10, ViewDist.NORMAL);
location.getWorld().playSound(location, Sound.BAT_TAKEOFF, 1, 0.6F);
Manager.runSyncTimer(new BukkitRunnable()
{
Chicken chicken;
int iterations = 0;
@Override
public void run()
{
if (iterations == 0)
{
if (UtilEnt.isGrounded(player))
{
cancel();
}
else
{
Location location = player.getLocation();
chicken = player.getWorld().spawn(location, Chicken.class);
chicken.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 0, false, false));
chicken.setPassenger(player);
UtilEnt.vegetate(chicken, true);
UtilEnt.ghost(chicken, true, false);
iterations++;
}
return;
}
Location location = player.getLocation().add(0, 0.9, 0);
location.setPitch(0);
UtilEnt.setPosition(chicken, chicken.getLocation().add(location.getDirection().multiply(0.2)));
if (iterations % 4 == 0)
{
displayUmbrella(location.add(UtilAlg.getRight(location.getDirection()).multiply(0.5)));
}
if (!chicken.isValid() || chicken.getPassenger() == null || UtilEnt.isGrounded(chicken))
{
chicken.eject();
chicken.remove();
cancel();
}
iterations++;
}
}, 20, 1);
}
@Override
public void disableCustom(Player player, boolean message)
{
super.disableCustom(player, message);
if (player.getVehicle() != null)
{
player.getVehicle().remove();
}
}
private void displayUmbrella(Location location)
{
for (double y = 0; y < 1.5; y += 0.1)
{
new ColoredParticle(ParticleType.RED_DUST, BOTTOM, location.clone().add(0, y, 0))
.display();
}
location.add(0, 1.5, 0);
double deltaY = 0;
for (double r = 0.1; r < 1; r += 0.2)
{
for (double theta = 0; theta < 2 * Math.PI; theta += Math.PI / 10)
{
double x = r * Math.cos(theta), z = r * Math.sin(theta);
location.add(x, deltaY, z);
new ColoredParticle(ParticleType.RED_DUST, TOP, location)
.display();
location.subtract(x, deltaY, z);
}
deltaY -= 0.04;
}
}
}