Merge branch 'project-cosmetics' of https://github.com/Mineplex-LLC/Minecraft-PC into project-cosmetics

This commit is contained in:
LCastr0 2016-05-10 12:45:22 -03:00
commit 4fada6de49
6 changed files with 105 additions and 149 deletions

View File

@ -1,19 +1,13 @@
package mineplex.core.gadget.gadgets.death;
import org.bukkit.Color;
import org.bukkit.FireworkEffect;
import org.bukkit.FireworkEffect.Type;
import org.bukkit.entity.Player;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import mineplex.core.blood.BloodEvent;
import mineplex.core.common.util.C;
import mineplex.core.common.util.LineFormat;
import mineplex.core.common.util.UtilFirework;
import mineplex.core.common.util.UtilItem;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilText;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.types.DeathEffectGadget;
@ -34,31 +28,11 @@ public class DeathPinataBurst extends DeathEffectGadget
public void onBlood(Player player, BloodEvent event)
{
event.setCancelled(true);
Color[] colors = new Color[10];
for(int i = 0; i < colors.length; i++) {
colors[i] = Color.fromRGB(UtilMath.r(255*255*255));
}
UtilFirework.playFirework(event.getLocation(),
FireworkEffect.builder().flicker(true).trail(true).withColor(colors).with(Type.BURST).build());
for(int i = 0; i < colors.length; i++) {
colors[i] = Color.fromRGB(UtilMath.r(255*255*255));
}
UtilFirework.playFirework(event.getLocation().add(0, 1, 0),
FireworkEffect.builder().flicker(true).trail(true).withColor(colors).with(Type.BURST).build());
for(byte data : _data)
for(byte d : _data)
{
UtilItem.dropItem(new ItemStack(Material.WOOL, 1, (short)0, data), event.getLocation(), true, false, 20*3, false);
ItemStack item = new ItemStack(Material.INK_SACK, 1, (short) 0, d);
UtilItem.dropItem(item, event.getLocation(), true, false, 40, false);
}
for(Material m : new Material[]{Material.SUGAR, Material.PUMPKIN_PIE, Material.CAKE})
{
for(int i = 0; i < 3; i++)
{
UtilItem.dropItem(new ItemStack(m), event.getLocation(), true, false, 20*3, false);
}
}
}
}

View File

@ -40,6 +40,18 @@ public class ParticleEmerald extends ParticleGadget
if(getSet() == null || !getSet().isActive(player)) return;
if(!Manager.isMoving(player))
{
UtilParticle.PlayParticle(ParticleType.HAPPY_VILLAGER, player.getLocation().add(0, 2 - y, 0), 0.3f, 0f, 0.3f, 0, 2, ViewDist.NORMAL,
UtilServer.getPlayers());
}
else
{
UtilParticle.PlayParticle(ParticleType.HAPPY_VILLAGER, player.getLocation(), 0.1f, 0f, 0.1f, 0, 2, ViewDist.NORMAL,
UtilServer.getPlayers());
}
/*
tick += 17;
x = (float) (Math.sin(tick / 7d) * 1f);
z = (float) (Math.cos(tick / 7d) * 1f);
@ -48,25 +60,7 @@ public class ParticleEmerald extends ParticleGadget
UtilParticle.PlayParticle(ParticleType.HAPPY_VILLAGER, player.getLocation().add(x, y, z), 0f, 0f, 0f, 0, 1, ViewDist.NORMAL,
UtilServer.getPlayers());
// if (Manager.isMoving(player))
// {
// UtilParticle.PlayParticle(ParticleType.HAPPY_VILLAGER, player.getLocation().add(0, 1f, 0), 0f, 0f, 0f, 0, 1);
// }
// else
// {
// float scale = Math.abs((float) (Math.sin(player.getTicksLived()/30d) * 2f)) + 1;
// // float vertical = (float) (Math.cos(player.getTicksLived()/50d) * 1f);
//
// int dir = player.isSneaking() ? 1 : -1;
//
// for (double i=0 ; i<Math.PI * 2 ; i += 0.2)
// {
// double x = Math.sin(i + (dir * player.getTicksLived()/50d)) * (i%(Math.PI/2d));
// double z = Math.cos(i + (dir * player.getTicksLived()/50d)) * (i%(Math.PI/2d));
//
// UtilParticle.PlayParticle(ParticleType.HAPPY_VILLAGER, player.getLocation().add(x, 1, z), 0f, 0f, 0f, 0, 1);
// }
// }
*/
}
}

View File

@ -14,12 +14,14 @@ import org.bukkit.craftbukkit.v1_8_R3.entity.CraftChicken;
import org.bukkit.entity.Chicken;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scoreboard.Team;
import org.bukkit.util.Vector;
import mineplex.core.common.util.C;
import mineplex.core.common.util.LineFormat;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilItem;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilParticle.ParticleType;
@ -27,6 +29,7 @@ import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilShapes;
import mineplex.core.common.util.UtilText;
import mineplex.core.disguise.disguises.DisguisePlayer;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.types.WinEffectGadget;
import mineplex.core.hologram.Hologram;
@ -40,22 +43,27 @@ public class WinEffectBabyChicken extends WinEffectGadget
{
private Map<Hologram, Vector> _text = new HashMap<>();
private Chicken _chicken;
private DisguisePlayer _npc;
private List<Chicken> _teamChickens = new ArrayList<>();
private int _tick;
public WinEffectBabyChicken(GadgetManager manager)
{
super(manager, "Baby Chicken", UtilText.splitLineToArray(C.cGray + "Bawk Bawk strikes again! Summon his minions and run around as an itty bitty chicken.", LineFormat.LORE), 1,
Material.EGG, (byte) 0);
// teleportMode = WinEffectTeleportMode.Grid_Team_Behind;
_schematicName = "ChickenPodium";
}
@Override
public void play()
{
_chicken = spawnChicken(_player, _baseLocation);
UtilEnt.addGoalSelector(_chicken, 0, new PathfinderRandomRun(((CraftChicken)_chicken).getHandle(), getBaseLocation(), 4, 2.8));
Location loc = getBaseLocation().add(-4, 0, 0);
loc.setDirection(_player.getLocation().subtract(loc).toVector());
_npc = getNPC(getPlayer(), loc);
_tick = 0;
List<Location> circle = UtilShapes.getPointsInCircle(getBaseLocation(), team.size(), 3);
for(int i = 0; i < team.size(); i++)
@ -68,8 +76,6 @@ public class WinEffectBabyChicken extends WinEffectGadget
UtilEnt.setBoundingBox(c, 0, 0);
_teamChickens.add(c);
}
// lockAllPlayers = true;
}
public Chicken spawnChicken(Player player, Location loc)
@ -99,40 +105,70 @@ public class WinEffectBabyChicken extends WinEffectGadget
{
if (!isRunning()) return;
if (event.getType() == UpdateType.TICK)
if (event.getType() != UpdateType.TICK) return;
_tick++;
if(_tick < 20*2)
{
// Flap Chicken Wings
PacketPlayOutRelEntityMove packet = new PacketPlayOutRelEntityMove(_chicken.getEntityId(), (byte) 0, (byte) 0, (byte) 0, false);
UtilPlayer.getNearby(_chicken.getLocation(), 64).stream().forEach(p -> UtilPlayer.sendPacket(_player, packet));
((CraftChicken) _chicken).getHandle().lastDamager = ((CraftChicken) _chicken).getHandle();
if (UtilMath.r(10) == 0 || _text.size() < 3)
return;
}
else if(_tick == 20*2)
{
Location loc = _npc.GetEntity().getBukkitEntity().getLocation();
_npc.GetEntity().getBukkitEntity().remove();
UtilParticle.PlayParticleToAll(ParticleType.EXPLODE, loc.clone().add(0, 1, 0), 0.3f, 0.6f, 0.3f, 0.07f, 200, ViewDist.NORMAL);
UtilParticle.PlayParticleToAll(ParticleType.EXPLODE, loc.clone().add(0, 0.3, 0), 0.7f, 0.1f, 0.7f, 0.07f, 200, ViewDist.NORMAL);
for(int i = 0; i < 10; i++)
{
_chicken.getWorld().playSound(_chicken.getLocation(), Sound.CHICKEN_IDLE, 1, (float) (1 + Math.random()*0.6));
Hologram hologram = new Hologram(Manager.getHologramManager(), _chicken.getEyeLocation(), C.Italics + "BAWK");
_text.put(hologram, Vector.getRandom().subtract(Vector.getRandom()).normalize().multiply(0.4).setY(0.6));
hologram.start();
}
for (Iterator<Entry<Hologram, Vector>> it = _text.entrySet().iterator(); it.hasNext();)
{
Entry<Hologram, Vector> e = it.next();
e.getValue().setY(e.getValue().getY() - 0.1);
if(e.getKey().getLocation().getY() < _chicken.getLocation().getY())
{
e.getKey().stop();
it.remove();
}
e.getKey().setLocation(e.getKey().getLocation().add(e.getValue()));
Vector v = Vector.getRandom().subtract(Vector.getRandom()).multiply(0.25).setY(0.5);
UtilItem.dropItem(new ItemStack(Material.EGG), loc, false, false, 8*20, false).setVelocity(v);
}
for(Chicken c : _teamChickens)
{
UtilEnt.CreatureLook(c, _chicken);
}
_chicken = spawnChicken(_player, loc);
UtilEnt.addGoalSelector(_chicken, 0, new PathfinderRandomRun(((CraftChicken)_chicken).getHandle(), getBaseLocation(), 4, 2.8));
_chicken.getWorld().playSound(_chicken.getLocation(), Sound.CHICKEN_EGG_POP, 1, 1);
return;
}
// Flap Chicken Wings
PacketPlayOutRelEntityMove packet = new PacketPlayOutRelEntityMove(_chicken.getEntityId(), (byte) 0, (byte) 0, (byte) 0, false);
UtilPlayer.getNearby(_chicken.getLocation(), 64).stream().forEach(p -> UtilPlayer.sendPacket(_player, packet));
((CraftChicken) _chicken).getHandle().lastDamager = ((CraftChicken) _chicken).getHandle();
if (UtilMath.r(10) == 0 || _text.size() < 3)
{
_chicken.getWorld().playSound(_chicken.getLocation(), Sound.CHICKEN_IDLE, 1, (float) (1 + Math.random()*0.6));
Hologram hologram = new Hologram(Manager.getHologramManager(), _chicken.getEyeLocation(), C.Italics + "BAWK");
_text.put(hologram, Vector.getRandom().subtract(Vector.getRandom()).normalize().multiply(0.4).setY(0.6));
hologram.start();
}
for (Iterator<Entry<Hologram, Vector>> it = _text.entrySet().iterator(); it.hasNext();)
{
Entry<Hologram, Vector> e = it.next();
e.getValue().setY(e.getValue().getY() - 0.1);
if(e.getKey().getLocation().getY() < _chicken.getLocation().getY())
{
e.getKey().stop();
it.remove();
}
e.getKey().setLocation(e.getKey().getLocation().add(e.getValue()));
}
for(Chicken c : _teamChickens)
{
UtilEnt.CreatureLook(c, _chicken);
}
}
@Override
@ -147,6 +183,15 @@ public class WinEffectBabyChicken extends WinEffectGadget
_teamChickens.forEach(c -> c.remove());
team.forEach(p -> UtilPlayer.showForAll(p));
}
@Override
public void teleport(Player player, List<Player> team, List<Player> other, Location loc)
{
loc = getBaseLocation().add(-10, 0, 0);
_baseLocation.subtract(4, 4, 0);
super.teleport(player, team, other, loc);
_baseLocation.add(4, 0, 0);
}
private static class PathfinderRandomRun extends PathfinderGoal
{

View File

@ -36,6 +36,8 @@ public class WinEffectRiseOfTheElderGuardian extends WinEffectGadget
{
super(manager, "Rise of the Elder Guardian", UtilText.splitLinesToArray(new String[]{C.cGray + C.Italics + "Say hello to my little friend...", " ", " ", C.cGray + C.Italics + "the elder guardian."}, LineFormat.LORE),
1, Material.PRISMARINE, (byte) 2);
_schematicName = "ElderGuardianPodium";
}
@Override
@ -46,11 +48,11 @@ public class WinEffectRiseOfTheElderGuardian extends WinEffectGadget
int amount = 4;
for(int i = 0; i < amount; i++)
{
double rad = ((Math.PI*2)/amount) * i;
double rad = ((Math.PI*2)/amount) * i + Math.PI/4.0;
double x = Math.sin(rad);
double z = Math.cos(rad);
Vector diff = new Vector(x, 0, z).multiply(4.5).setY(-2.5);
Vector diff = new Vector(x, 0, z).multiply(5.7).setY(1);
Location loc = getBaseLocation().add(diff);
@ -104,7 +106,6 @@ public class WinEffectRiseOfTheElderGuardian extends WinEffectGadget
{
UtilParticle.PlayParticleToAll(ParticleType.EXPLODE, getBaseLocation().add(0, 1, 0), 0.3f, 0.6f, 0.3f, 0.07f, 400, ViewDist.NORMAL);
UtilParticle.PlayParticleToAll(ParticleType.EXPLODE, getBaseLocation().add(0, 0.3, 0), 0.7f, 0.1f, 0.7f, 0.07f, 400, ViewDist.NORMAL);
// getBaseLocation().getWorld().playSound(getBaseLocation(), Sound.EXPLODE, 1, 1);
getBaseLocation().getWorld().playSound(getBaseLocation(), Sound.ZOMBIE_REMEDY, 6f, 0.75f);
getBaseLocation().getWorld().playSound(getBaseLocation(), Sound.EXPLODE, 1, 1);

View File

@ -187,66 +187,10 @@ public abstract class WinEffectGadget extends Gadget
p.setAllowFlight(false);
UtilPlayer.hideFromAll(p);
}
// for(Entity e : loc.getWorld().getEntities())
// {
// if(!(e instanceof LivingEntity)) continue;
// DisguiseBase d = Manager.getDisguiseManager().getDisguise((LivingEntity) e);
// if(d == null) continue;
// if(!(d instanceof DisguisePlayer)) continue;
//// d.resendMetadata();
// }
}
public void buildWinnerRoom(Location loc)
{
/*
Location floorCenter = loc.clone().add(0, -1, 0);
Location floorA = floorCenter.clone().subtract(8, 0, 8);
Location floorB = floorCenter.clone().add(7, 0, 7);
for(Block b : UtilBlock.getInBoundingBox(floorA, floorB, false))
{
Material mat = Material.STAINED_CLAY;
if(((b.getX()-floorA.getBlockX())%4 == 3 || (b.getX()-floorA.getBlockX())%4 == 0) &&
(((b.getZ()-floorA.getBlockZ())%4 == 3 || (b.getZ()-floorA.getBlockZ())%4 == 0)))
{
mat = Material.REDSTONE_LAMP_ON;
b.getRelative(BlockFace.DOWN).setType(Material.REDSTONE_BLOCK);
}
b.setType(mat);
}
Location wallB = floorB.clone().add(0, 8, 0);
for(Block b : UtilBlock.getInBoundingBox(floorA, wallB, false, true, true, false))
{
b.setTypeIdAndData(Material.STAINED_CLAY.getId(), (byte) (((b.getY()-floorCenter.getBlockY())%2 == 0)? 14 : 1), true);
}
Location ceilA = floorA.clone().add(0, 8, 0);
for(Block b : UtilBlock.getInBoundingBox(ceilA, wallB, false))
{
b.setType(Material.LAPIS_BLOCK);
}
int cxMin = floorB.getChunk().getX();
int cxMax = floorA.getChunk().getX();
int czMin = floorB.getChunk().getZ();
int czMax = floorA.getChunk().getZ();
for(int x = cxMin; x <= cxMax; x++)
{
for(int z = czMin; z <= czMax; z++)
{
((CraftChunk)loc.getWorld().getChunkAt(x, z)).getHandle().initLighting();
}
}
// ((CraftChunk)loc.getChunk()).getHandle().initLighting();
*/
pasteScematic(_schematicName);
}

View File

@ -43,8 +43,6 @@ public class WinEffectManager
game.CreatureAllowOverride = true;
playEffect();
game.CreatureAllowOverride = false;
}
public void prepareSetup(Location loc) {
@ -71,9 +69,7 @@ public class WinEffectManager
effect.teleport(winner, team, other, loc.clone().add(loc.getDirection().normalize().multiply(10)).add(0, 3, 0));
new BukkitRunnable() {
public void run() {
game.CreatureAllowOverride = true;
effect.runPlay();
game.CreatureAllowOverride = false;
}
}.runTaskLater(game.getArcadeManager().getPlugin(), 30);
@ -84,6 +80,8 @@ public class WinEffectManager
effect.runFinish();
game.getArcadeManager().getCosmeticManager().getGadgetManager().setHideParticles(false);
game.CreatureAllowOverride = false;
}
public WinEffectGadget getWinEffect(Player player)