Update statistics and implement data tracker

This commit is contained in:
Thanos paravantis 2016-04-24 22:39:56 +03:00
parent e2a6500bce
commit 856eb6059b
16 changed files with 275 additions and 150 deletions

View File

@ -716,13 +716,13 @@ public enum Achievement
//Bawk Bawk Battles //Bawk Bawk Battles
BAWK_BAWK_BATTLES_VETERAN("Bawk Bawk Battles Veteran", 1500, BAWK_BAWK_BATTLES_VETERAN("Bawk Bawk Battles Veteran", 1500,
new String[]{"BawkBawkBattles.Veteran"}, new String[]{"Bawk Bawk Battles.Veteran"},
new String[]{"Win 50 games of Bawk Bawk Battles"}, new String[]{"Win 50 games of Bawk Bawk Battles"},
new int[] {50}, new int[] {50},
AchievementCategory.BAWK_BAWK_BATTLES), AchievementCategory.BAWK_BAWK_BATTLES),
BAWK_BAWK_BATTLES_LAURA_CRAFT("Laura Craft", 800, BAWK_BAWK_BATTLES_LAURA_CRAFT("Laura Craft", 800,
new String[]{"BawkBawkBattles.LauraCraft"}, new String[]{"Bawk Bawk Battles.LauraCraft"},
new String[]{ new String[]{
C.cGray + "Maze Runner Challenge", C.cGray + "Maze Runner Challenge",
"Finish 3 times in a row, in under 8 seconds" "Finish 3 times in a row, in under 8 seconds"
@ -731,16 +731,16 @@ public enum Achievement
AchievementCategory.BAWK_BAWK_BATTLES), AchievementCategory.BAWK_BAWK_BATTLES),
BAWK_BAWK_BATTLES_PINATA_MASTER("Pinata Master", 800, BAWK_BAWK_BATTLES_PINATA_MASTER("Pinata Master", 800,
new String[]{"BawkBawkBattles.PinataMaster"}, new String[]{"Bawk Bawk Battles.PinataMaster"},
new String[]{ new String[]{
C.cGray + "Chicken Shooting Challenge", C.cGray + "Chicken Shooting Challenge",
"Hit 6 chickens without missing one" "Hit 6 chickens in a row"
}, },
new int[] {1}, new int[] {1},
AchievementCategory.BAWK_BAWK_BATTLES), AchievementCategory.BAWK_BAWK_BATTLES),
BAWK_BAWK_BATTLES_MILK_MAN("Professional Milk Man", 700, BAWK_BAWK_BATTLES_MILK_MAN("Professional Milk Man", 700,
new String[]{"BawkBawkBattles.MilkMan"}, new String[]{"Bawk Bawk Battles.MilkMan"},
new String[]{ new String[]{
C.cGray + "Milk a Cow Challenge", C.cGray + "Milk a Cow Challenge",
"Deliver 100 buckets of milk to the farmer" "Deliver 100 buckets of milk to the farmer"
@ -749,7 +749,7 @@ public enum Achievement
AchievementCategory.BAWK_BAWK_BATTLES), AchievementCategory.BAWK_BAWK_BATTLES),
BAWK_BAWK_BATTLES_TAG_MASTER("Tag Master", 700, BAWK_BAWK_BATTLES_TAG_MASTER("Tag Master", 700,
new String[]{"BawkBawkBattles.TagMaster"}, new String[]{"Bawk Bawk Battles.TagMaster"},
new String[]{ new String[]{
C.cGray + "Reverse Tag Challenge", C.cGray + "Reverse Tag Challenge",
"Win an entire round without being untagged" "Win an entire round without being untagged"
@ -758,7 +758,7 @@ public enum Achievement
AchievementCategory.BAWK_BAWK_BATTLES), AchievementCategory.BAWK_BAWK_BATTLES),
BAWK_BAWK_BATTLES_SURF_UP("Surf Up", 850, BAWK_BAWK_BATTLES_SURF_UP("Surf Up", 850,
new String[]{"BawkBawkBattles.SurfUp"}, new String[]{"Bawk Bawk Battles.SurfUp"},
new String[]{ new String[]{
C.cGray + "Wave Crush Challenge", C.cGray + "Wave Crush Challenge",
"Avoid 250 waves" "Avoid 250 waves"
@ -767,10 +767,10 @@ public enum Achievement
AchievementCategory.BAWK_BAWK_BATTLES), AchievementCategory.BAWK_BAWK_BATTLES),
BAWK_BAWK_BATTLES_KANGAROO_AT_HEART("Kangaroo at Heart", 900, BAWK_BAWK_BATTLES_KANGAROO_AT_HEART("Kangaroo at Heart", 900,
new String[]{"BawkBawkBattles.Kangaroo"}, new String[]{"Bawk Bawk Battles.Kangaroo"},
new String[]{ new String[]{
C.cGray + "Kangaroo Jump Challenge", C.cGray + "Kangaroo Jump Challenge",
"Complete the challenge 15 times in a row without falling" "Complete this challenge by jumping higher than others"
}, },
new int[] {15}, new int[] {15},
AchievementCategory.BAWK_BAWK_BATTLES), AchievementCategory.BAWK_BAWK_BATTLES),

View File

@ -82,6 +82,7 @@ import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeArrowRam
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeBlockLobbers; import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeBlockLobbers;
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeBouncingBlock; import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeBouncingBlock;
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeBuildRace; import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeBuildRace;
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeChickenShooting;
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeCloudFall; import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeCloudFall;
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeColorChange; import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeColorChange;
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeDeadlyTnt; import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeDeadlyTnt;
@ -105,7 +106,6 @@ import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengePunchThe
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeRedLightGreenLight; import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeRedLightGreenLight;
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeReverseTag; import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeReverseTag;
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeRushPush; import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeRushPush;
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeChickenShooting;
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeSmashOff; import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeSmashOff;
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeTreasureDigger; import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeTreasureDigger;
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeVolleyPig; import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeVolleyPig;
@ -171,7 +171,6 @@ public class BawkBawkBattles extends TeamGame implements IThrown
* *
* Medium Priority * Medium Priority
* - Make spawn distance equal from a target * - Make spawn distance equal from a target
* - Fix out of bounds exception on stats menu
* *
* Low Priority * Low Priority
* - Spawn more chickens on Chicken Shooting * - Spawn more chickens on Chicken Shooting
@ -197,7 +196,7 @@ public class BawkBawkBattles extends TeamGame implements IThrown
"Last player with lives wins!" "Last player with lives wins!"
}); });
_settings.setMaxLives(5); _settings.setMaxLives(1);
// Damage = false; // Damage = false;
DamagePvP = false; DamagePvP = false;
@ -231,8 +230,7 @@ public class BawkBawkBattles extends TeamGame implements IThrown
new StatTrackerPinataMasterTracker(this), new StatTrackerPinataMasterTracker(this),
new StatTrackerSurfUpTracker(this), new StatTrackerSurfUpTracker(this),
new StatTrackerTagMasterTracker(this), new StatTrackerTagMasterTracker(this),
new StatTrackerVeteranTracker(this) new StatTrackerVeteranTracker(this));
);
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@ -519,7 +517,6 @@ public class BawkBawkBattles extends TeamGame implements IThrown
_challenge.getData().setSpawns(selected); _challenge.getData().setSpawns(selected);
_playersTeam.SetSpawns(selected); _playersTeam.SetSpawns(selected);
System.out.println("Setup: " + (selected.size()));
SpectatorSpawn = UtilWorld.averageLocation(selected).add(0, 7, 0); SpectatorSpawn = UtilWorld.averageLocation(selected).add(0, 7, 0);
return selected; return selected;
@ -552,6 +549,7 @@ public class BawkBawkBattles extends TeamGame implements IThrown
if (!block.isEmpty() && _challenge.getData().isModifiedBlock(block)) if (!block.isEmpty() && _challenge.getData().isModifiedBlock(block))
{ {
System.out.println("Removing solid block");
block.setType(Material.AIR); block.setType(Material.AIR);
block.setData((byte) 0); block.setData((byte) 0);
_challenge.getData().removeModifiedBlock(block); _challenge.getData().removeModifiedBlock(block);
@ -620,7 +618,7 @@ public class BawkBawkBattles extends TeamGame implements IThrown
{ {
_delay = System.currentTimeMillis(); _delay = System.currentTimeMillis();
resetPlayersOnChallengeEnding(); killRemainingPlayers();
Manager.getPluginManager().callEvent(new ChallengeEndEvent(_challenge)); Manager.getPluginManager().callEvent(new ChallengeEndEvent(_challenge));
HandlerList.unregisterAll(_challenge); HandlerList.unregisterAll(_challenge);
@ -635,7 +633,7 @@ public class BawkBawkBattles extends TeamGame implements IThrown
EndCheck(); EndCheck();
} }
private void resetPlayersOnChallengeEnding() private void killRemainingPlayers()
{ {
for (Player player : getPlayersAlive()) for (Player player : getPlayersAlive())
{ {
@ -654,10 +652,15 @@ public class BawkBawkBattles extends TeamGame implements IThrown
} }
} }
if (_challenge.getData().isCompleted(player)) addChallengeGemReward(player);
{ }
AddGems(player, 3, "Completed Challenge", true, true); }
}
private void addChallengeGemReward(Player player)
{
if (_challenge.getData().isCompleted(player))
{
AddGems(player, 3, "Completed Challenge", true, true);
} }
} }
@ -955,7 +958,7 @@ public class BawkBawkBattles extends TeamGame implements IThrown
_challenge.getData().addLostPlayer(player); _challenge.getData().addLostPlayer(player);
handleDeath(player); handleDeath(player);
EndCheck(); // EndCheck();
} }
@EventHandler @EventHandler
@ -1366,6 +1369,15 @@ public class BawkBawkBattles extends TeamGame implements IThrown
_challenge.markSpawnLocations(); _challenge.markSpawnLocations();
} }
@EventHandler
public void onGamePrepareCountdownCommence(GamePrepareCountdownCommence event)
{
for (Player player : GetPlayers(true))
{
removeSolidBlock(player.getLocation());
}
}
@EventHandler @EventHandler
public void onGameLive(GameStateChangeEvent event) public void onGameLive(GameStateChangeEvent event)
{ {
@ -1392,7 +1404,7 @@ public class BawkBawkBattles extends TeamGame implements IThrown
UtilTextMiddle.display(null, null, player); UtilTextMiddle.display(null, null, player);
} }
_deathEffect.removeSpawnedEntities(); // _deathEffect.removeSpawnedEntities();
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")

View File

@ -0,0 +1,10 @@
package nautilus.game.arcade.game.games.mineware.challenge;
import org.bukkit.entity.Player;
public interface DataTracker
{
public Number getData(Player player);
public boolean hasData(Player player);
}

View File

@ -8,18 +8,19 @@ import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Chicken; import org.bukkit.entity.Chicken;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory; import org.bukkit.inventory.PlayerInventory;
import org.bukkit.scheduler.BukkitRunnable;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilAlg;
@ -31,12 +32,13 @@ import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.game.games.mineware.BawkBawkBattles; import nautilus.game.arcade.game.games.mineware.BawkBawkBattles;
import nautilus.game.arcade.game.games.mineware.challenge.Challenge; import nautilus.game.arcade.game.games.mineware.challenge.Challenge;
import nautilus.game.arcade.game.games.mineware.challenge.ChallengeType; import nautilus.game.arcade.game.games.mineware.challenge.ChallengeType;
import nautilus.game.arcade.game.games.mineware.challenge.DataTracker;
public class ChallengeChickenShooting extends Challenge public class ChallengeChickenShooting extends Challenge implements DataTracker
{ {
private ArrayList<Chicken> _chickens = new ArrayList<Chicken>(); private ArrayList<Chicken> _chickens = new ArrayList<Chicken>();
private HashMap<Player, Integer> _score = new HashMap<Player, Integer>(); private HashMap<Player, Integer> _score = new HashMap<Player, Integer>();
private HashMap<Player, Integer> _arrowsShot = new HashMap<Player, Integer>(); private HashMap<Player, Integer> _arrowTracker = new HashMap<Player, Integer>();
public ChallengeChickenShooting(BawkBawkBattles host) public ChallengeChickenShooting(BawkBawkBattles host)
{ {
@ -127,7 +129,7 @@ public class ChallengeChickenShooting extends Challenge
inv.setItem(31, arrow); inv.setItem(31, arrow);
_score.put(player, 0); _score.put(player, 0);
_arrowsShot.put(player, 0); _arrowTracker.put(player, 0);
} }
} }
@ -143,28 +145,6 @@ public class ChallengeChickenShooting extends Challenge
} }
remove(EntityType.ARROW); remove(EntityType.ARROW);
_chickens.clear();
_score.clear();
_arrowsShot.clear();
}
@EventHandler
public void onProjectileLaunch(ProjectileLaunchEvent event)
{
if (!isChallengeValid())
return;
if (!(event.getEntity() instanceof Arrow))
return;
Arrow arrow = (Arrow) event.getEntity();
Player player = (Player) arrow.getShooter();
if (!isPlayerValid(player))
return;
_arrowsShot.put(player, _arrowsShot.get(player) + 1);
} }
@EventHandler @EventHandler
@ -238,6 +218,43 @@ public class ChallengeChickenShooting extends Challenge
spawnChicken(); spawnChicken();
} }
@EventHandler
public void onProjectileHit(ProjectileHitEvent event)
{
if (!isChallengeValid())
return;
Projectile projectile = event.getEntity();
if (!(projectile.getShooter() instanceof Player))
return;
Player player = (Player) projectile.getShooter();
new BukkitRunnable()
{
@Override
public void run()
{
if (!isChallengeValid() || !projectile.isValid() || projectile.isDead())
{
cancel();
return;
}
if (projectile.isOnGround())
{
if (_arrowTracker.containsKey(player))
{
_arrowTracker.remove(player);
}
}
projectile.remove();
}
}.runTaskLater(Host.Manager.getPlugin(), 1L);
}
@EventHandler @EventHandler
public void onPlayerQuit(PlayerQuitEvent event) public void onPlayerQuit(PlayerQuitEvent event)
{ {
@ -250,17 +267,23 @@ public class ChallengeChickenShooting extends Challenge
{ {
_score.remove(player); _score.remove(player);
} }
}
public HashMap<Player, Integer> getArrowsShot() if (_arrowTracker.containsKey(player))
{ {
return _arrowsShot; _arrowTracker.remove(player);
}
} }
private int showAndIncrementScore(Player player, LivingEntity entity) private int showAndIncrementScore(Player player, LivingEntity entity)
{ {
int score = _score.get(player) + 1; int score = _score.get(player) + 1;
if (_arrowTracker.containsKey(player))
{
int arrowsShot = _arrowTracker.get(player) + 1;
_arrowTracker.put(player, arrowsShot);
}
Location location = player.getEyeLocation(); Location location = player.getEyeLocation();
location.add(UtilAlg.getTrajectory(location, entity.getEyeLocation()).multiply(Math.min(7, entity.getLocation().distance(location)))); location.add(UtilAlg.getTrajectory(location, entity.getEyeLocation()).multiply(Math.min(7, entity.getLocation().distance(location))));
@ -309,4 +332,16 @@ public class ChallengeChickenShooting extends Challenge
return getCenter().add(random, 15, random); return getCenter().add(random, 15, random);
} }
@Override
public Number getData(Player player)
{
return _arrowTracker.get(player);
}
@Override
public boolean hasData(Player player)
{
return _arrowTracker.containsKey(player);
}
} }

View File

@ -12,6 +12,7 @@ import org.bukkit.block.Block;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilMath;
@ -20,11 +21,11 @@ import mineplex.core.updater.event.UpdateEvent;
import nautilus.game.arcade.game.games.mineware.BawkBawkBattles; import nautilus.game.arcade.game.games.mineware.BawkBawkBattles;
import nautilus.game.arcade.game.games.mineware.challenge.Challenge; import nautilus.game.arcade.game.games.mineware.challenge.Challenge;
import nautilus.game.arcade.game.games.mineware.challenge.ChallengeType; import nautilus.game.arcade.game.games.mineware.challenge.ChallengeType;
import nautilus.game.arcade.game.games.mineware.challenge.DataTracker;
public class ChallengeKangarooJump extends Challenge public class ChallengeKangarooJump extends Challenge implements DataTracker
{ {
private HashMap<String, Boolean> _players = new HashMap<String, Boolean>(); private HashMap<Player, Integer> _heightData = new HashMap<Player, Integer>();
private HashMap<Player, Integer> _playerJumpHeight = new HashMap<Player, Integer>();
private long _gameTime = System.currentTimeMillis() + ((UtilMath.r(5) + 20) * 1000); private long _gameTime = System.currentTimeMillis() + ((UtilMath.r(5) + 20) * 1000);
public ChallengeKangarooJump(BawkBawkBattles host) public ChallengeKangarooJump(BawkBawkBattles host)
@ -103,8 +104,7 @@ public class ChallengeKangarooJump extends Challenge
{ {
for (Player player : getPlayersAlive()) for (Player player : getPlayersAlive())
{ {
_players.put(player.getName(), true); _heightData.put(player, 0);
_playerJumpHeight.put(player, 0);
} }
Host.StrictAntiHack = false; Host.StrictAntiHack = false;
@ -128,19 +128,10 @@ public class ChallengeKangarooJump extends Challenge
Player player = event.getPlayer(); Player player = event.getPlayer();
if (!isPlayerValid(player)) if (!isPlayerValid(player) || !player.isOnGround())
return; return;
if (!_players.get(player.getName()))
{
if (player.isOnGround())
_players.put(player.getName(), true);
return;
}
UtilAction.velocity(player, 2, 0.4, 4, true); UtilAction.velocity(player, 2, 0.4, 4, true);
_players.put(player.getName(), false);
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@ -158,19 +149,19 @@ public class ChallengeKangarooJump extends Challenge
if (!player.isOnGround()) if (!player.isOnGround())
return; return;
if (!_playerJumpHeight.containsKey(player)) if (!_heightData.containsKey(player))
return; return;
if (Data.isLost(player)) if (Data.isLost(player))
_playerJumpHeight.remove(player); _heightData.remove(player);
if (!isPlayerValid(player)) if (!isPlayerValid(player))
return; return;
if (player.getLocation().getBlockY() < _playerJumpHeight.get(player)) if (player.getLocation().getBlockY() < _heightData.get(player))
_playerJumpHeight.remove(player); _heightData.remove(player);
else if (player.getLocation().getBlockY() > _playerJumpHeight.get(player)) else if (player.getLocation().getBlockY() > _heightData.get(player))
_playerJumpHeight.put(player, player.getLocation().getBlockY()); _heightData.put(player, player.getLocation().getBlockY());
} }
@EventHandler @EventHandler
@ -205,6 +196,20 @@ public class ChallengeKangarooJump extends Challenge
} }
} }
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event)
{
if (!isChallengeValid())
return;
Player player = event.getPlayer();
if (_heightData.containsKey(player))
{
_heightData.remove(player);
}
}
private ArrayList<String> sortHash(final HashMap<String, Integer> unsortedMap) private ArrayList<String> sortHash(final HashMap<String, Integer> unsortedMap)
{ {
ArrayList<String> players = new ArrayList<String>(unsortedMap.keySet()); ArrayList<String> players = new ArrayList<String>(unsortedMap.keySet());
@ -224,8 +229,15 @@ public class ChallengeKangarooJump extends Challenge
return players; return players;
} }
public HashMap<Player, Integer> getPlayerHeights() @Override
public Number getData(Player player)
{ {
return _playerJumpHeight; return _heightData.get(player);
}
@Override
public boolean hasData(Player player)
{
return _heightData.containsKey(player);
} }
} }

View File

@ -17,6 +17,7 @@ import org.bukkit.entity.Villager.Profession;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerItemConsumeEvent; import org.bukkit.event.player.PlayerItemConsumeEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
@ -32,8 +33,9 @@ import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.game.games.mineware.BawkBawkBattles; import nautilus.game.arcade.game.games.mineware.BawkBawkBattles;
import nautilus.game.arcade.game.games.mineware.challenge.Challenge; import nautilus.game.arcade.game.games.mineware.challenge.Challenge;
import nautilus.game.arcade.game.games.mineware.challenge.ChallengeType; import nautilus.game.arcade.game.games.mineware.challenge.ChallengeType;
import nautilus.game.arcade.game.games.mineware.challenge.DataTracker;
public class ChallengeMilkACow extends Challenge public class ChallengeMilkACow extends Challenge implements DataTracker
{ {
private Villager _villager; private Villager _villager;
private HashMap<Entity, ArrayList<String>> _milked = new HashMap<Entity, ArrayList<String>>(); private HashMap<Entity, ArrayList<String>> _milked = new HashMap<Entity, ArrayList<String>>();
@ -47,12 +49,12 @@ public class ChallengeMilkACow extends Challenge
"Harry", "Harry",
"Andrew", "Andrew",
"Daniel", "Daniel",
"Bobbae", "Josh",
"Jim" "Jim"
}; };
String[] _cowNames = new String[] { String[] _cowNames = new String[] {
"Moorten", "Moosly",
"Mooington", "Mooington",
"Mooley", "Mooley",
"Moose", "Moose",
@ -278,6 +280,20 @@ public class ChallengeMilkACow extends Challenge
event.setCancelled(true); event.setCancelled(true);
} }
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event)
{
if (!isChallengeValid())
return;
Player player = event.getPlayer();
if (_score.containsKey(player))
{
_score.remove(player);
}
}
private void spawnCowsAndFarmer() private void spawnCowsAndFarmer()
{ {
Host.CreatureAllow = true; Host.CreatureAllow = true;
@ -329,8 +345,15 @@ public class ChallengeMilkACow extends Challenge
return getCenter().add(UtilMath.r(((getArenaSize() * 2) - 1) - (getArenaSize() - 1)), 1, UtilMath.r((getArenaSize() * 2) - 1) - (getArenaSize() - 1)); return getCenter().add(UtilMath.r(((getArenaSize() * 2) - 1) - (getArenaSize() - 1)), 1, UtilMath.r((getArenaSize() * 2) - 1) - (getArenaSize() - 1));
} }
public HashMap<Player, Integer> getScore() @Override
public Number getData(Player player)
{ {
return _score; return _score.get(player);
}
@Override
public boolean hasData(Player player)
{
return _score.containsKey(player);
} }
} }

View File

@ -10,12 +10,14 @@ import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import nautilus.game.arcade.game.games.mineware.BawkBawkBattles; import nautilus.game.arcade.game.games.mineware.BawkBawkBattles;
import nautilus.game.arcade.game.games.mineware.challenge.Challenge; import nautilus.game.arcade.game.games.mineware.challenge.Challenge;
import nautilus.game.arcade.game.games.mineware.challenge.ChallengeType; import nautilus.game.arcade.game.games.mineware.challenge.ChallengeType;
import nautilus.game.arcade.game.games.mineware.challenge.DataTracker;
public class ChallengeNavigationMaze extends Challenge public class ChallengeNavigationMaze extends Challenge implements DataTracker
{ {
private HashMap<Player, Long> _completionTime = new HashMap<Player, Long>(); private HashMap<Player, Long> _completionTime = new HashMap<Player, Long>();
@ -150,6 +152,20 @@ public class ChallengeNavigationMaze extends Challenge
} }
} }
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event)
{
if (!isChallengeValid())
return;
Player player = event.getPlayer();
if (_completionTime.containsKey(player))
{
_completionTime.remove(player);
}
}
private boolean isMazeValid() private boolean isMazeValid()
{ {
ArrayList<Block> blocks = new ArrayList<Block>(); ArrayList<Block> blocks = new ArrayList<Block>();
@ -258,8 +274,15 @@ public class ChallengeNavigationMaze extends Challenge
return blocks; return blocks;
} }
public HashMap<Player, Long> getPlayerTimes() @Override
public Number getData(Player player)
{ {
return _completionTime; return _completionTime.get(player);
}
@Override
public boolean hasData(Player player)
{
return _completionTime.containsKey(player);
} }
} }

View File

@ -34,7 +34,7 @@ public class ChallengeReverseTag extends Challenge
private ChallengeTeam _tagged; private ChallengeTeam _tagged;
private ChallengeTeam _nonTagged; private ChallengeTeam _nonTagged;
private int _cooldown = 2; // seconds private int _cooldown = 2; // Seconds
private HashSet<Player> _cooldowns = new HashSet<Player>(); private HashSet<Player> _cooldowns = new HashSet<Player>();
public ChallengeReverseTag(BawkBawkBattles host) public ChallengeReverseTag(BawkBawkBattles host)

View File

@ -21,8 +21,9 @@ import mineplex.core.projectile.ProjectileUser;
import nautilus.game.arcade.game.games.mineware.BawkBawkBattles; import nautilus.game.arcade.game.games.mineware.BawkBawkBattles;
import nautilus.game.arcade.game.games.mineware.challenge.Challenge; import nautilus.game.arcade.game.games.mineware.challenge.Challenge;
import nautilus.game.arcade.game.games.mineware.challenge.ChallengeType; import nautilus.game.arcade.game.games.mineware.challenge.ChallengeType;
import nautilus.game.arcade.game.games.mineware.challenge.DataTracker;
public class ChallengeWaveCrush extends Challenge public class ChallengeWaveCrush extends Challenge implements DataTracker
{ {
// The amount of waves that started. // The amount of waves that started.
private int _waveAmount = 0; private int _waveAmount = 0;
@ -279,8 +280,15 @@ public class ChallengeWaveCrush extends Challenge
} }
} }
public HashMap<Player, Integer> getSurvivedWaves() @Override
public Number getData(Player player)
{ {
return _survivedWaves; return _survivedWaves.get(player);
}
@Override
public boolean hasData(Player player)
{
return _survivedWaves.containsKey(player);
} }
} }

View File

@ -1,5 +1,9 @@
package nautilus.game.arcade.game.games.mineware.stats; package nautilus.game.arcade.game.games.mineware.stats;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import nautilus.game.arcade.game.Game; import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.Game.GameState; import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.game.games.mineware.challenge.Challenge; import nautilus.game.arcade.game.games.mineware.challenge.Challenge;
@ -7,10 +11,6 @@ import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeKangaroo
import nautilus.game.arcade.game.games.mineware.events.ChallengeEndEvent; import nautilus.game.arcade.game.games.mineware.events.ChallengeEndEvent;
import nautilus.game.arcade.stats.StatTracker; import nautilus.game.arcade.stats.StatTracker;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
public class StatTrackerKangarooAtHeart extends StatTracker<Game> public class StatTrackerKangarooAtHeart extends StatTracker<Game>
{ {
public StatTrackerKangarooAtHeart(Game game) public StatTrackerKangarooAtHeart(Game game)
@ -31,15 +31,13 @@ public class StatTrackerKangarooAtHeart extends StatTracker<Game>
ChallengeKangarooJump kangarooJump = (ChallengeKangarooJump) challenge; ChallengeKangarooJump kangarooJump = (ChallengeKangarooJump) challenge;
for (Player player : kangarooJump.getPlayerHeights().keySet()) for (Player player : getGame().GetPlayers(true))
{ {
if (!player.isOnline()) if (kangarooJump.hasData(player) && kangarooJump.getData().isCompleted(player))
continue;
if (!kangarooJump.getData().isLost(player))
{ {
System.out.println("Kangaroo at Heart: " + player.getName());
addStat(player, "Kangaroo", 1, false, false); addStat(player, "Kangaroo", 1, false, false);
} }
} }
} }
} }

View File

@ -33,14 +33,18 @@ public class StatTrackerLauraCraftTracker extends StatTracker<Game>
ChallengeNavigationMaze navigationMaze = (ChallengeNavigationMaze) challenge; ChallengeNavigationMaze navigationMaze = (ChallengeNavigationMaze) challenge;
for (Player player : navigationMaze.getPlayerTimes().keySet()) for (Player player : getGame().GetPlayers(true))
{ {
if (!player.isOnline()) if (navigationMaze.hasData(player))
continue;
if (navigationMaze.getPlayerTimes().get(player) <= (navigationMaze.getSettings().getStartTime() + (_timeForCompletion * 1000)))
{ {
addStat(player, "LauraCraft", 1, false, false); long time = (long) navigationMaze.getData(player);
long limit = navigationMaze.getSettings().getStartTime() + _timeForCompletion * 1000;
if (time <= limit)
{
System.out.println("Laura Craft: " + player.getName());
addStat(player, "LauraCraft", 1, false, false);
}
} }
} }
} }

View File

@ -29,16 +29,20 @@ public class StatTrackerMilkManTracker extends StatTracker<Game>
if (!(challenge instanceof ChallengeMilkACow)) if (!(challenge instanceof ChallengeMilkACow))
return; return;
ChallengeMilkACow milkeACow = (ChallengeMilkACow) challenge; ChallengeMilkACow milkACow = (ChallengeMilkACow) challenge;
for (Player player : milkeACow.getScore().keySet()) for (Player player : getGame().GetPlayers(true))
{ {
if (!player.isOnline()) if (milkACow.hasData(player))
continue; {
int score = (int) milkACow.getData(player);
int score = milkeACow.getScore().get(player); if (score > 0)
{
addStat(player, "MilkMan", score, false, false); System.out.println("Milk Man: " + player.getName());
addStat(player, "MilkMan", score, false, false);
}
}
} }
} }
} }

View File

@ -1,5 +1,9 @@
package nautilus.game.arcade.game.games.mineware.stats; package nautilus.game.arcade.game.games.mineware.stats;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import nautilus.game.arcade.game.Game; import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.Game.GameState; import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.game.games.mineware.challenge.Challenge; import nautilus.game.arcade.game.games.mineware.challenge.Challenge;
@ -7,10 +11,6 @@ import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeChickenS
import nautilus.game.arcade.game.games.mineware.events.ChallengeEndEvent; import nautilus.game.arcade.game.games.mineware.events.ChallengeEndEvent;
import nautilus.game.arcade.stats.StatTracker; import nautilus.game.arcade.stats.StatTracker;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
public class StatTrackerPinataMasterTracker extends StatTracker<Game> public class StatTrackerPinataMasterTracker extends StatTracker<Game>
{ {
public StatTrackerPinataMasterTracker(Game game) public StatTrackerPinataMasterTracker(Game game)
@ -31,16 +31,17 @@ public class StatTrackerPinataMasterTracker extends StatTracker<Game>
ChallengeChickenShooting chickenShooting = (ChallengeChickenShooting) challenge; ChallengeChickenShooting chickenShooting = (ChallengeChickenShooting) challenge;
for (Player player : chickenShooting.getArrowsShot().keySet()) for (Player player : getGame().GetPlayers(true))
{ {
if (!player.isOnline()) if (chickenShooting.hasData(player))
continue;
int shots = chickenShooting.getArrowsShot().get(player);
if (shots == 6 && challenge.getData().isCompleted(player))
{ {
addStat(player, "PinataMaster", 1, true, false); int shots = (int) chickenShooting.getData(player);
if (chickenShooting.getData().isCompleted(player) && shots == 6)
{
System.out.println("Pinata Master: " + player.getName());
addStat(player, "PinataMaster", 1, true, false);
}
} }
} }
} }

View File

@ -1,5 +1,9 @@
package nautilus.game.arcade.game.games.mineware.stats; package nautilus.game.arcade.game.games.mineware.stats;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import nautilus.game.arcade.game.Game; import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.Game.GameState; import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.game.games.mineware.challenge.Challenge; import nautilus.game.arcade.game.games.mineware.challenge.Challenge;
@ -7,10 +11,6 @@ import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeWaveCrus
import nautilus.game.arcade.game.games.mineware.events.ChallengeEndEvent; import nautilus.game.arcade.game.games.mineware.events.ChallengeEndEvent;
import nautilus.game.arcade.stats.StatTracker; import nautilus.game.arcade.stats.StatTracker;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
public class StatTrackerSurfUpTracker extends StatTracker<Game> public class StatTrackerSurfUpTracker extends StatTracker<Game>
{ {
public StatTrackerSurfUpTracker(Game game) public StatTrackerSurfUpTracker(Game game)
@ -31,17 +31,17 @@ public class StatTrackerSurfUpTracker extends StatTracker<Game>
ChallengeWaveCrush waveCrush = (ChallengeWaveCrush) challenge; ChallengeWaveCrush waveCrush = (ChallengeWaveCrush) challenge;
for (Player player : waveCrush.getSurvivedWaves().keySet()) for (Player player : getGame().GetPlayers(true))
{ {
if (!player.isOnline()) if (waveCrush.hasData(player))
continue; {
int amount = (int) waveCrush.getData(player);
int amount = waveCrush.getSurvivedWaves().get(player);
if (amount < 1) if (amount > 1)
continue; {
addStat(player, "SurfUp", amount, false, false);
addStat(player, "SurfUp", amount, false, false); }
}
} }
} }
} }

View File

@ -31,15 +31,13 @@ public class StatTrackerTagMasterTracker extends StatTracker<Game>
ChallengeReverseTag reverseTag = (ChallengeReverseTag) challenge; ChallengeReverseTag reverseTag = (ChallengeReverseTag) challenge;
for (Player player : reverseTag.getNonTagged().getPlayers()) for (Player player : reverseTag.getTagged().getPlayers())
{ {
if (!player.isOnline()) if (reverseTag.getData().isCompleted(player))
continue; {
System.out.println("Tag Master: " + player.getName());
if (reverseTag.getData().isLost(player)) addStat(player, "TagMaster", 1, true, false);
continue; }
addStat(player, "TagMaster", 1, true, false);
} }
} }
} }

View File

@ -1,6 +1,5 @@
package nautilus.game.arcade.game.games.mineware.stats; package nautilus.game.arcade.game.games.mineware.stats;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
@ -21,10 +20,8 @@ public class StatTrackerVeteranTracker extends StatTracker<Game>
{ {
if (event.GetState() == GameState.End) if (event.GetState() == GameState.End)
{ {
for (Player player : getGame().getWinners()) System.out.println("Veteran: " + getGame().getWinners().get(0).getName());
{ addStat(getGame().getWinners().get(0), "Veteran", 1, true, false);
addStat(player, "Veteran", 1, true, false);
}
} }
} }
} }