Start implementing chicken attack on player death.
This commit is contained in:
parent
821ff58ab0
commit
44de231c7d
@ -1 +1 @@
|
||||
{}
|
||||
[[{"location":"C:\\@Thanos\\Documents\\Minecraft\\Mineplex\\projects\\Mineplex\\Plugins\\Mineplex.Core.Common","type":"PROJECT","hints":{"PROJECT_NAME":"Mineplex.Core.Common"}},"ABSENT"],[{"location":"C:\\Program Files\\Java\\jre1.8.0_51","type":"JRE","hints":{}},"jre:jre:1.8.0"],[{"location":"C:\\@Thanos\\Documents\\Minecraft\\Mineplex\\projects\\Mineplex\\Plugins\\Libraries\\craftbukkit.jar","type":"JAR","hints":{}},"ABSENT"],[{"location":"C:\\@Thanos\\Documents\\Minecraft\\Mineplex\\projects\\Mineplex\\Plugins\\Nautilus.Game.Arcade","type":"PROJECT","hints":{"PROJECT_NAME":"Nautilus.Game.Arcade"}},"ABSENT"]]
|
@ -9,6 +9,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
@ -55,8 +56,9 @@ import nautilus.game.arcade.ArcadeFormat;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.GameType;
|
||||
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||
import nautilus.game.arcade.game.GameTeam;
|
||||
import nautilus.game.arcade.game.GameTeam.PlayerState;
|
||||
import nautilus.game.arcade.game.SoloGame;
|
||||
import nautilus.game.arcade.game.TeamGame;
|
||||
import nautilus.game.arcade.game.games.mineware.challenges.ChallengeAnvilDance;
|
||||
import nautilus.game.arcade.game.games.mineware.challenges.ChallengeArrowRampage;
|
||||
import nautilus.game.arcade.game.games.mineware.challenges.ChallengeBlockLobbers;
|
||||
@ -69,7 +71,6 @@ import nautilus.game.arcade.game.games.mineware.challenges.ChallengeDragonEgg;
|
||||
import nautilus.game.arcade.game.games.mineware.challenges.ChallengeFallingBlocks;
|
||||
import nautilus.game.arcade.game.games.mineware.challenges.ChallengeFastFood;
|
||||
import nautilus.game.arcade.game.games.mineware.challenges.ChallengeFishingDay;
|
||||
import nautilus.game.arcade.game.games.mineware.challenges.ChallengeWaterHorror;
|
||||
import nautilus.game.arcade.game.games.mineware.challenges.ChallengeInfestation;
|
||||
import nautilus.game.arcade.game.games.mineware.challenges.ChallengeKOTL;
|
||||
import nautilus.game.arcade.game.games.mineware.challenges.ChallengeKangarooJump;
|
||||
@ -90,7 +91,9 @@ import nautilus.game.arcade.game.games.mineware.challenges.ChallengeStandOnColor
|
||||
import nautilus.game.arcade.game.games.mineware.challenges.ChallengeTntLauncher;
|
||||
import nautilus.game.arcade.game.games.mineware.challenges.ChallengeTreasureDigger;
|
||||
import nautilus.game.arcade.game.games.mineware.challenges.ChallengeVolleyPig;
|
||||
import nautilus.game.arcade.game.games.mineware.challenges.ChallengeWaterHorror;
|
||||
import nautilus.game.arcade.game.games.mineware.challenges.ChallengeWaveCrush;
|
||||
import nautilus.game.arcade.game.games.mineware.effect.ChickenAttack;
|
||||
import nautilus.game.arcade.game.games.mineware.effect.DeathEffect;
|
||||
import nautilus.game.arcade.game.games.mineware.effect.DeathEffectData;
|
||||
import nautilus.game.arcade.game.games.mineware.events.ChallengeEndEvent;
|
||||
@ -105,8 +108,11 @@ import nautilus.game.arcade.game.games.mineware.stats.MinewareTagMasterTracker;
|
||||
import nautilus.game.arcade.game.games.mineware.stats.MinewareVeteranTracker;
|
||||
import nautilus.game.arcade.kit.Kit;
|
||||
|
||||
public class MineWare extends SoloGame implements IThrown
|
||||
public class MineWare extends TeamGame implements IThrown
|
||||
{
|
||||
private GameTeam _playersTeam;
|
||||
private GameTeam _chickenTeam;
|
||||
|
||||
private HashMap<Player, Integer> _lives = new HashMap<Player, Integer>();
|
||||
|
||||
public boolean _currentCrumble = false;
|
||||
@ -123,6 +129,7 @@ public class MineWare extends SoloGame implements IThrown
|
||||
private ArrayList<Class<? extends Challenge>> _challengesCopy = new ArrayList<Class<? extends Challenge>>();
|
||||
|
||||
private DeathEffect _deathEffect = new DeathEffect(this);
|
||||
private ChickenAttack _chickenAttack;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public MineWare(ArcadeManager manager)
|
||||
@ -166,6 +173,28 @@ public class MineWare extends SoloGame implements IThrown
|
||||
);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onTeamCreation(GameStateChangeEvent event)
|
||||
{
|
||||
if (event.GetState() != GameState.Recruit)
|
||||
return;
|
||||
|
||||
for (GameTeam team : GetTeamList())
|
||||
{
|
||||
if (team.GetColor() == ChatColor.YELLOW)
|
||||
{
|
||||
team.SetName("Players");
|
||||
_playersTeam = team;
|
||||
}
|
||||
else if (team.GetColor() == ChatColor.WHITE)
|
||||
{
|
||||
team.SetName("Chickens");
|
||||
team.SetVisible(false);
|
||||
_chickenTeam = team;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Debug Only
|
||||
@SuppressWarnings("unchecked")
|
||||
@EventHandler
|
||||
@ -373,6 +402,22 @@ public class MineWare extends SoloGame implements IThrown
|
||||
return true;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInitializeChickens(GameStateChangeEvent event)
|
||||
{
|
||||
if (event.GetState() != GameState.Live)
|
||||
return;
|
||||
|
||||
// TODO: Retrieve center and corners from map data.
|
||||
|
||||
_chickenAttack = new ChickenAttack(
|
||||
this,
|
||||
new Location(WorldData.World, 500, 0, 500),
|
||||
new Location(WorldData.World, 510, 0, 500),
|
||||
new Location(WorldData.World, 500, 0, 510)
|
||||
);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onGameLive(GameStateChangeEvent event)
|
||||
{
|
||||
@ -1008,18 +1053,23 @@ public class MineWare extends SoloGame implements IThrown
|
||||
}
|
||||
else
|
||||
{
|
||||
if(playersAlive <= 3)
|
||||
if (playersAlive <= 3)
|
||||
{
|
||||
_places.add(player);
|
||||
}
|
||||
|
||||
gameLostMessage(player);
|
||||
Scoreboard.ResetScore(player.getName());
|
||||
SetPlayerState(player, PlayerState.OUT);
|
||||
// SetPlayerState(player, PlayerState.OUT);
|
||||
|
||||
if (isDeath)
|
||||
{
|
||||
Manager.addSpectator(player, true);
|
||||
// Manager.addSpectator(player, true);
|
||||
_chickenAttack.start(player);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetPlayerState(player, PlayerState.OUT);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1109,7 +1159,6 @@ public class MineWare extends SoloGame implements IThrown
|
||||
Scoreboard.WriteBlank();
|
||||
for (Player player : GetPlayers(true))
|
||||
{
|
||||
|
||||
int currentLives = getLives(player);
|
||||
String status;
|
||||
String currentlyOut = "";
|
||||
@ -1153,11 +1202,11 @@ public class MineWare extends SoloGame implements IThrown
|
||||
Scoreboard.Draw();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int GetScoreboardScore(Player player)
|
||||
{
|
||||
return getLives(player);
|
||||
}
|
||||
// @Override
|
||||
// public int GetScoreboardScore(Player player)
|
||||
// {
|
||||
// return getLives(player);
|
||||
// }
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerDropItem(PlayerDropItemEvent event)
|
||||
@ -1175,6 +1224,16 @@ public class MineWare extends SoloGame implements IThrown
|
||||
return _isChallengeStarted;
|
||||
}
|
||||
|
||||
public GameTeam getPlayersTeam()
|
||||
{
|
||||
return _playersTeam;
|
||||
}
|
||||
|
||||
public GameTeam getChickenTeam()
|
||||
{
|
||||
return _chickenTeam;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void Idle(ProjectileUser data)
|
||||
{
|
||||
|
@ -1,7 +1,10 @@
|
||||
package nautilus.game.arcade.game.games.mineware.effect;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
@ -12,10 +15,10 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
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.UtilBlock;
|
||||
import mineplex.core.common.util.UtilTextMiddle;
|
||||
import mineplex.core.disguise.disguises.DisguiseChicken;
|
||||
import nautilus.game.arcade.game.GameTeam.PlayerState;
|
||||
import nautilus.game.arcade.game.games.mineware.MineWare;
|
||||
|
||||
public class ChickenAttack
|
||||
@ -24,10 +27,13 @@ public class ChickenAttack
|
||||
private JavaPlugin _plugin;
|
||||
|
||||
private Location _center;
|
||||
private World _world;
|
||||
|
||||
private Location _corner1;
|
||||
private Location _corner2;
|
||||
|
||||
private Location[] _spawnpoints = new Location[4];
|
||||
private ArrayList<Chicken> _chickens = new ArrayList<>();
|
||||
private int _chickenSpawnAmount = 12;
|
||||
|
||||
public ChickenAttack(MineWare host, Location center, Location corner1, Location corner2)
|
||||
@ -36,6 +42,7 @@ public class ChickenAttack
|
||||
_plugin = host.getArcadeManager().getPlugin();
|
||||
|
||||
_center = center;
|
||||
_world = center.getWorld();
|
||||
_corner1 = corner1;
|
||||
_corner2 = corner2;
|
||||
|
||||
@ -47,6 +54,26 @@ public class ChickenAttack
|
||||
block.getRelative(BlockFace.SOUTH).getLocation(),
|
||||
block.getRelative(BlockFace.WEST).getLocation()
|
||||
};
|
||||
|
||||
createTestPlatform();
|
||||
spawnChickens();
|
||||
}
|
||||
|
||||
public void createTestPlatform()
|
||||
{
|
||||
ArrayList<Block> platform = UtilBlock.getInBoundingBox(_corner1, _corner2, false);
|
||||
|
||||
for (Block block : platform)
|
||||
{
|
||||
if (block.getLocation().equals(_center))
|
||||
{
|
||||
block.setType(Material.DIAMOND_BLOCK);
|
||||
}
|
||||
else
|
||||
{
|
||||
block.setType(Material.STONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void start(Player player)
|
||||
@ -57,14 +84,29 @@ public class ChickenAttack
|
||||
UtilTextMiddle.display(null, C.cRed + C.Bold + "Chicken Attack!", 5, 40, 5);
|
||||
player.playSound(player.getLocation(), Sound.FIZZ, 1.0F, 1.0F);
|
||||
|
||||
debugDeathTask(player);
|
||||
}
|
||||
|
||||
private void debugDeathTask(Player player)
|
||||
{
|
||||
new BukkitRunnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
spawnChickens();
|
||||
if (_host.IsLive())
|
||||
kill(player);
|
||||
else
|
||||
cancel();
|
||||
}
|
||||
}.runTaskLater(_plugin, 40L);
|
||||
}.runTaskLater(_plugin, 100L);
|
||||
}
|
||||
|
||||
private void kill(Player player)
|
||||
{
|
||||
_host.SetPlayerTeam(player, _host.getChickenTeam(), false);
|
||||
player.teleport(_host.GetSpectatorLocation());
|
||||
new DisguiseChicken(player);
|
||||
}
|
||||
|
||||
private void spawnChickens()
|
||||
@ -74,9 +116,6 @@ public class ChickenAttack
|
||||
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++)
|
||||
@ -89,6 +128,16 @@ public class ChickenAttack
|
||||
|
||||
private void customizeChicken(Chicken chicken)
|
||||
{
|
||||
//
|
||||
_chickens.add(chicken);
|
||||
}
|
||||
|
||||
public void reset()
|
||||
{
|
||||
for (Chicken chicken : _chickens)
|
||||
{
|
||||
chicken.remove();
|
||||
}
|
||||
|
||||
_chickens.clear();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user