Add particles on death effect, started working on chicken attack.
This commit is contained in:
parent
e89785963a
commit
c0a397b9fb
@ -118,9 +118,7 @@ public class MineWare extends SoloGame implements IThrown
|
|||||||
private ArrayList<Class<? extends Challenge>> _challenges = new ArrayList<Class<? extends Challenge>>();
|
private ArrayList<Class<? extends Challenge>> _challenges = new ArrayList<Class<? extends Challenge>>();
|
||||||
private ArrayList<Class<? extends Challenge>> _challengesCopy = new ArrayList<Class<? extends Challenge>>();
|
private ArrayList<Class<? extends Challenge>> _challengesCopy = new ArrayList<Class<? extends Challenge>>();
|
||||||
|
|
||||||
// Location not used at the moment.
|
private DeathEffect _deathEffect = new DeathEffect(this);
|
||||||
private Location _chickens = new Location(WorldData.World, 0, 0, 0);
|
|
||||||
private DeathEffect _deathEffect = new DeathEffect(this, _chickens);
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public MineWare(ArcadeManager manager)
|
public MineWare(ArcadeManager manager)
|
||||||
@ -166,39 +164,39 @@ public class MineWare extends SoloGame implements IThrown
|
|||||||
|
|
||||||
public void PopulateOrders()
|
public void PopulateOrders()
|
||||||
{
|
{
|
||||||
// _challenges.add(ChallengeAnvilDance.class);
|
_challenges.add(ChallengeAnvilDance.class);
|
||||||
// _challenges.add(ChallengeArrowRampage.class);
|
_challenges.add(ChallengeArrowRampage.class);
|
||||||
// _challenges.add(ChallengeBlockLobbers.class);
|
_challenges.add(ChallengeBlockLobbers.class);
|
||||||
// _challenges.add(ChallengeBouncingBlock.class);
|
_challenges.add(ChallengeBouncingBlock.class);
|
||||||
// _challenges.add(ChallengeBuildRace.class);
|
_challenges.add(ChallengeBuildRace.class);
|
||||||
// _challenges.add(ChallengeChestLoot.class);
|
_challenges.add(ChallengeChestLoot.class);
|
||||||
// _challenges.add(ChallengeCloudFall.class);
|
_challenges.add(ChallengeCloudFall.class);
|
||||||
// _challenges.add(ChallengeDogvsCat.class);
|
_challenges.add(ChallengeDogvsCat.class);
|
||||||
// _challenges.add(ChallengeDragonEgg.class);
|
_challenges.add(ChallengeDragonEgg.class);
|
||||||
// _challenges.add(ChallengeFallingBlocks.class);
|
_challenges.add(ChallengeFallingBlocks.class);
|
||||||
// _challenges.add(ChallengeFastFood.class);
|
_challenges.add(ChallengeFastFood.class);
|
||||||
// _challenges.add(ChallengeFishingDay.class);
|
_challenges.add(ChallengeFishingDay.class);
|
||||||
// _challenges.add(ChallengeInfestation.class);
|
_challenges.add(ChallengeInfestation.class);
|
||||||
// _challenges.add(ChallengeKangarooJump.class);
|
_challenges.add(ChallengeKangarooJump.class);
|
||||||
// _challenges.add(ChallengeKOTL.class);
|
_challenges.add(ChallengeKOTL.class);
|
||||||
// _challenges.add(ChallengeLavaRun.class);
|
_challenges.add(ChallengeLavaRun.class);
|
||||||
// _challenges.add(ChallengeMilkACow.class);
|
_challenges.add(ChallengeMilkACow.class);
|
||||||
// _challenges.add(ChallengeMineADiamond.class);
|
_challenges.add(ChallengeMineADiamond.class);
|
||||||
// _challenges.add(ChallengeMinecartDance.class);
|
_challenges.add(ChallengeMinecartDance.class);
|
||||||
_challenges.add(ChallengeMiniOITQ.class);
|
_challenges.add(ChallengeMiniOITQ.class);
|
||||||
// _challenges.add(ChallengeNavigateMaze.class);
|
_challenges.add(ChallengeNavigateMaze.class);
|
||||||
// _challenges.add(ChallengePickASide.class);
|
_challenges.add(ChallengePickASide.class);
|
||||||
// _challenges.add(ChallengePunchThePig.class);
|
_challenges.add(ChallengePunchThePig.class);
|
||||||
// _challenges.add(ChallengeRedLightGreenLight.class);
|
_challenges.add(ChallengeRedLightGreenLight.class);
|
||||||
// _challenges.add(ChallengeReverseTag.class);
|
_challenges.add(ChallengeReverseTag.class);
|
||||||
// _challenges.add(ChallengeRushPush.class);
|
_challenges.add(ChallengeRushPush.class);
|
||||||
// _challenges.add(ChallengeShootChickens.class);
|
_challenges.add(ChallengeShootChickens.class);
|
||||||
// _challenges.add(ChallengeSmashOff.class);
|
_challenges.add(ChallengeSmashOff.class);
|
||||||
// _challenges.add(ChallengeStandOnColor.class);
|
_challenges.add(ChallengeStandOnColor.class);
|
||||||
// _challenges.add(ChallengeTntLauncher.class);
|
_challenges.add(ChallengeTntLauncher.class);
|
||||||
// _challenges.add(ChallengeTreasureDigger.class);
|
_challenges.add(ChallengeTreasureDigger.class);
|
||||||
// _challenges.add(ChallengeVolleyPig.class);
|
_challenges.add(ChallengeVolleyPig.class);
|
||||||
// _challenges.add(ChallengeWaveCrush.class);
|
_challenges.add(ChallengeWaveCrush.class);
|
||||||
|
|
||||||
// ============== trashed ==============
|
// ============== trashed ==============
|
||||||
// _challenges.add(ChallengeSimonSays.class);
|
// _challenges.add(ChallengeSimonSays.class);
|
||||||
@ -496,14 +494,9 @@ public class MineWare extends SoloGame implements IThrown
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
Player player = event.getEntity();
|
Player player = event.getEntity();
|
||||||
Location death = player.getLocation().clone();
|
|
||||||
|
|
||||||
// _deathEffect.watch(player, death);
|
|
||||||
|
|
||||||
_challenge.getLost().add(player);
|
_challenge.getLost().add(player);
|
||||||
LoseLife(event.getEntity(), true);
|
LoseLife(event.getEntity(), true);
|
||||||
|
|
||||||
_deathEffect.playDeath(player, death);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
@ -892,9 +885,11 @@ public class MineWare extends SoloGame implements IThrown
|
|||||||
|
|
||||||
public void LoseLife(Player player, boolean isDeath)
|
public void LoseLife(Player player, boolean isDeath)
|
||||||
{
|
{
|
||||||
|
Location death = player.getLocation().clone();
|
||||||
|
|
||||||
if (!isDeath)
|
if (!isDeath)
|
||||||
{
|
{
|
||||||
Manager.addSpectator(player, true);
|
Manager.addSpectator(player, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_challenge == null || _challenge.IsCompleted(player))
|
if (_challenge == null || _challenge.IsCompleted(player))
|
||||||
@ -934,6 +929,8 @@ public class MineWare extends SoloGame implements IThrown
|
|||||||
Manager.addSpectator(player, false);
|
Manager.addSpectator(player, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_deathEffect.playDeath(player, death);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void endCurrentChallenge() // TODO
|
public void endCurrentChallenge() // TODO
|
||||||
|
@ -0,0 +1,95 @@
|
|||||||
|
package nautilus.game.arcade.game.games.mineware.effect;
|
||||||
|
|
||||||
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
|
import org.bukkit.entity.Chicken;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilTextMiddle;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import nautilus.game.arcade.game.games.mineware.MineWare;
|
||||||
|
|
||||||
|
public class ChickenAttack
|
||||||
|
{
|
||||||
|
private MineWare _host;
|
||||||
|
private JavaPlugin _plugin;
|
||||||
|
|
||||||
|
private Location _center;
|
||||||
|
private Location _corner1;
|
||||||
|
private Location _corner2;
|
||||||
|
|
||||||
|
private Location[] _spawnpoints = new Location[4];
|
||||||
|
private int _chickenSpawnAmount = 12;
|
||||||
|
|
||||||
|
public ChickenAttack(MineWare host, Location center, Location corner1, Location corner2)
|
||||||
|
{
|
||||||
|
_host = host;
|
||||||
|
_plugin = host.getArcadeManager().getPlugin();
|
||||||
|
|
||||||
|
_center = center;
|
||||||
|
_corner1 = corner1;
|
||||||
|
_corner2 = corner2;
|
||||||
|
|
||||||
|
Block block = _center.getBlock();
|
||||||
|
|
||||||
|
_spawnpoints = new Location[] {
|
||||||
|
block.getRelative(BlockFace.NORTH).getLocation(),
|
||||||
|
block.getRelative(BlockFace.EAST).getLocation(),
|
||||||
|
block.getRelative(BlockFace.SOUTH).getLocation(),
|
||||||
|
block.getRelative(BlockFace.WEST).getLocation()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public void start(Player player)
|
||||||
|
{
|
||||||
|
player.teleport(_center);
|
||||||
|
player.setGameMode(GameMode.ADVENTURE);
|
||||||
|
|
||||||
|
UtilTextMiddle.display(null, C.cRed + C.Bold + "Chicken Attack!", 5, 40, 5);
|
||||||
|
player.playSound(player.getLocation(), Sound.FIZZ, 1.0F, 1.0F);
|
||||||
|
|
||||||
|
new BukkitRunnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
spawnChickens();
|
||||||
|
}
|
||||||
|
}.runTaskLater(_plugin, 40L);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void spawnChickens()
|
||||||
|
{
|
||||||
|
int spawnAmount = _chickenSpawnAmount / _spawnpoints.length;
|
||||||
|
|
||||||
|
for (int i = 0; i < _spawnpoints.length; i++)
|
||||||
|
{
|
||||||
|
Location spawn = _spawnpoints[i];
|
||||||
|
|
||||||
|
UtilParticle.PlayParticleToAll(ParticleType.CLOUD, spawn.clone().add(0, 0.2, 0), 0.2F, 0.2F, 0.2F, 0.0F, 20, ViewDist.NORMAL);
|
||||||
|
|
||||||
|
World world = spawn.getWorld();
|
||||||
|
|
||||||
|
for (int j = 0; j < spawnAmount; j++)
|
||||||
|
{
|
||||||
|
Chicken chicken = world.spawn(spawn, Chicken.class);
|
||||||
|
customizeChicken(chicken);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void customizeChicken(Chicken chicken)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
@ -19,7 +19,6 @@ import org.bukkit.util.EulerAngle;
|
|||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.UtilEnt;
|
|
||||||
import mineplex.core.common.util.UtilMath;
|
import mineplex.core.common.util.UtilMath;
|
||||||
import mineplex.core.common.util.UtilParticle;
|
import mineplex.core.common.util.UtilParticle;
|
||||||
import mineplex.core.common.util.UtilParticle.ParticleType;
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
@ -34,18 +33,16 @@ public class DeathEffect
|
|||||||
private MineWare _host;
|
private MineWare _host;
|
||||||
private JavaPlugin _plugin;
|
private JavaPlugin _plugin;
|
||||||
private DeathText _deathText = new DeathText();
|
private DeathText _deathText = new DeathText();
|
||||||
private Location _chickens; // Not used at the moment.
|
|
||||||
private ArrayList<DeathEffectData> _data = new ArrayList<DeathEffectData>();
|
private ArrayList<DeathEffectData> _data = new ArrayList<DeathEffectData>();
|
||||||
|
|
||||||
public DeathEffect(MineWare host, Location chickens)
|
public DeathEffect(MineWare host)
|
||||||
{
|
{
|
||||||
_host = host;
|
_host = host;
|
||||||
_plugin = host.getArcadeManager().getPlugin();
|
_plugin = host.getArcadeManager().getPlugin();
|
||||||
_chickens = chickens;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void playDeath(Player player, Location death)
|
public void playDeath(Player player, Location death)
|
||||||
{
|
{
|
||||||
DeathEffectData data = new DeathEffectData(player, death);
|
DeathEffectData data = new DeathEffectData(player, death);
|
||||||
_data.add(data);
|
_data.add(data);
|
||||||
|
|
||||||
@ -58,17 +55,8 @@ public class DeathEffect
|
|||||||
if (!belowFirst.isEmpty() || !belowSecond.isEmpty())
|
if (!belowFirst.isEmpty() || !belowSecond.isEmpty())
|
||||||
startFoodSpawnTask(data);
|
startFoodSpawnTask(data);
|
||||||
|
|
||||||
// removeFinishedEffect(data);
|
|
||||||
|
|
||||||
System.out.println("Death effect triggered for " + player.getName() + ".");
|
System.out.println("Death effect triggered for " + player.getName() + ".");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void watch(Player player, Location death)
|
|
||||||
{
|
|
||||||
Location modified = death.clone().add(0, 2.0, 0);
|
|
||||||
modified.setYaw(90);
|
|
||||||
player.teleport(modified);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void startFoodSpawnTask(DeathEffectData data)
|
private void startFoodSpawnTask(DeathEffectData data)
|
||||||
{
|
{
|
||||||
@ -108,8 +96,8 @@ public class DeathEffect
|
|||||||
{
|
{
|
||||||
if (food.isValid())
|
if (food.isValid())
|
||||||
{
|
{
|
||||||
UtilParticle.PlayParticleToAll(ParticleType.CLOUD, food.getLocation(), 0.0F, 0.0F,
|
UtilParticle.PlayParticleToAll(ParticleType.HAPPY_VILLAGER, food.getLocation(), 0.0F, 0.0F,
|
||||||
0.0F, 0.0F, 1, ViewDist.MAX);
|
0.0F, 0.0F, 1, ViewDist.NORMAL);
|
||||||
food.remove();
|
food.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -139,7 +127,7 @@ public class DeathEffect
|
|||||||
|
|
||||||
data.setChickenHead(chickenHead);
|
data.setChickenHead(chickenHead);
|
||||||
playHeadRotation(data);
|
playHeadRotation(data);
|
||||||
|
|
||||||
Hologram hologram = getRandomHologram(loc);
|
Hologram hologram = getRandomHologram(loc);
|
||||||
hologram.start();
|
hologram.start();
|
||||||
data.setHologram(hologram);
|
data.setHologram(hologram);
|
||||||
@ -147,19 +135,16 @@ public class DeathEffect
|
|||||||
|
|
||||||
private Hologram getRandomHologram(Location loc)
|
private Hologram getRandomHologram(Location loc)
|
||||||
{
|
{
|
||||||
Hologram hologram = new Hologram(
|
Hologram hologram = new Hologram(_host.getArcadeManager().getHologramManager(), loc.clone().add(0, 1.3, 0),
|
||||||
_host.getArcadeManager().getHologramManager(),
|
C.cAqua + C.Bold + _deathText.getRandom() + C.Reset);
|
||||||
loc.clone().add(0, 1.3, 0),
|
|
||||||
C.cAqua + C.Bold + _deathText.getRandom() + C.Reset
|
|
||||||
);
|
|
||||||
|
|
||||||
return hologram;
|
return hologram;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void playHeadRotation(DeathEffectData data)
|
private void playHeadRotation(DeathEffectData data)
|
||||||
{
|
{
|
||||||
ArmorStand chickenHead = data.getChickenHead();
|
ArmorStand chickenHead = data.getChickenHead();
|
||||||
|
|
||||||
new BukkitRunnable()
|
new BukkitRunnable()
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -186,7 +171,7 @@ public class DeathEffect
|
|||||||
}
|
}
|
||||||
}.runTaskTimer(_plugin, 1L, 1L);
|
}.runTaskTimer(_plugin, 1L, 1L);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeChickenHead(DeathEffectData data)
|
private void removeChickenHead(DeathEffectData data)
|
||||||
{
|
{
|
||||||
ArmorStand chickenHead = data.getChickenHead();
|
ArmorStand chickenHead = data.getChickenHead();
|
||||||
@ -202,6 +187,9 @@ public class DeathEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UtilParticle.PlayParticleToAll(ParticleType.CLOUD, data.getLocation().clone().add(0, 1.0, 0), 0.2F,
|
||||||
|
0.2F, 0.2F, 0.0F, 10, ViewDist.NORMAL);
|
||||||
|
|
||||||
chickenHead.remove();
|
chickenHead.remove();
|
||||||
data.getHologram().stop();
|
data.getHologram().stop();
|
||||||
}
|
}
|
||||||
@ -224,23 +212,6 @@ public class DeathEffect
|
|||||||
}.runTaskLater(_plugin, 10L);
|
}.runTaskLater(_plugin, 10L);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeFinishedEffect(DeathEffectData data)
|
|
||||||
{
|
|
||||||
new BukkitRunnable()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
if (!_data.isEmpty() && data.hasFinished())
|
|
||||||
{
|
|
||||||
_data.remove(data);
|
|
||||||
System.out.println("Removing Data: " + data.getPlayer().getName());
|
|
||||||
cancel();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}.runTaskTimer(_plugin, 0L, 1L);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeSpawnedEntities()
|
public void removeSpawnedEntities()
|
||||||
{
|
{
|
||||||
for (DeathEffectData data : _data)
|
for (DeathEffectData data : _data)
|
||||||
@ -252,13 +223,12 @@ public class DeathEffect
|
|||||||
food.remove();
|
food.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data.getFoodItems().clear();
|
data.getFoodItems().clear();
|
||||||
data.getChickenHead().remove();
|
data.getChickenHead().remove();
|
||||||
data.getHologram().stop();
|
data.getHologram().stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
_data.clear();
|
_data.clear();
|
||||||
System.out.println("Clearing Data.");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user